小白学 Python(16):基础数据类型(函数)(上)

人生苦短,我选Pythonpython

前文传送门git

小白学 Python(1):开篇github

小白学 Python(2):基础数据类型(上)编程

小白学 Python(3):基础数据类型(下)数据结构

小白学 Python(4):变量基础操做函数

小白学 Python(5):基础运算符(上)spa

小白学 Python(6):基础运算符(下)code

小白学 Python(7):基础流程控制(上)cdn

小白学 Python(8):基础流程控制(下)blog

小白学 Python(9):基础数据结构(列表)(上)

小白学 Python(10):基础数据结构(列表)(下)

小白学 Python(11):基础数据结构(元组)

小白学 Python(12):基础数据结构(字典)(上)

小白学 Python(13):基础数据结构(字典)(下)

小白学 Python(14):基础数据结构(集合)(上)

小白学 Python(15):基础数据结构(集合)(下)

引言

跟各位同窗讲一个好消息,当你看到这篇连载的时候,整个 Python 基础内容部分已通过大半了。

但愿各位同窗再接再砺,努力把剩下的部分也看完。

函数

提到函数,没有接触过编程的同窗会不会想到这个:

y = f(x)

可是,咱们在 Python 中使用到的函数和数学中的函数没有半毛钱关系(额,可能稍微有点关系)。

在 Python 中,咱们使用函数是为了简化问题,将同一类的操做定义为一个函数,在遇到相同的问题调用对应的函数,相似于 y = f(x)x = 1 的时候 y = 1x = 2 的时候 y = 2

因此,函数就是重复使用的代码。

定义函数

定义函数的规则以下:

  • 函数代码块以 def 关键词开头。
  • 后接函数名称和圆括号 ()
  • 圆括号中可使用参数。
  • 函数内容以冒号起始,而且缩进。
  • return 结束函数,能够选择性地返回一个值。不带 return 至关于返回 None。

定义一个函数大体长这样:

def 函数名(形式参数):
    函数体
    return 返回值复制代码

def 是系统关键字,至于什么是系统关键字后面咱们再聊,这里仅须要知道 def 是用来定义函数的便可。

系统关键字在 PyCharm 中都会高亮显示,若是没有高亮,那么必定是你打错了。

好比咱们如今定义一个求两数之和的函数:

def add(a, b):
    c = a + b
    return c复制代码

这个有看不懂的么?

没有的话我就接着往下聊了,有的话就给我留言吧。

以上咱们就完成了一个函数的定义。

函数调用

函数定义好之后咱们还须要调用函数才能执行,一个函数放在那里是不会自动执行的。

废话,我哪知道你要传什么参数过来。。。

咱们调用一下刚才写好的函数:

c = add(1, 2)
print(c)复制代码

打印结果以下:

3复制代码

这里咱们介绍两个名词:

  • 实际参数:简称实参,咱们刚才在调用函数的时候传入 1 和 2 就是实参。主要体如今实际执行函数的时候使用。
  • 形式参数:简称形参,咱们刚才在定义函数的时候 add(a, b) 中的 a 和 b 就是形参。主要体如今它只是一个形式和格式,真正要执行的时候仍是要看传入的实参。

整个函数调用就是将实参传递给形参,完成计算后返回,而且打印返回值。

Python 中有不少内置的函数,好比咱们以前经常使用的 print()len()type()id() 等等。

这些函数都是内置的,无需咱们定义,因此能够直接拿来使用。

参数的传递

按照位置顺序传递

参数的传递有不少种方式,好比刚才咱们调用时使用的就是按照位置顺序传递。

add(1, 2)复制代码

按照赋值传递

除了按照位置顺序传递,咱们还能够按照赋值来传递:

这里咱们先定义一个减法函数。

def subtraction(a, b):
    return a - b


print(subtraction(b=5, a=10))复制代码

打印结果以下:

5复制代码

默认赋值

那么除了以上两种状况,还有没有其余状况?

固然还有,若是参数有两个,可是其中一个可能不会传递,这时咱们能够给它一个默认值。

这里咱们定义一个除法:

def division(a, b=1):
    return a / b


print(division(5))
print(division(10, 5))复制代码

在除法中,除数不能为 0 ,否则会报错,这里咱们给了一个默认值是 1 ,当除数不存在的时候,咱们能够取到默认值。

结果打印以下:

5.0
2.0复制代码

变长度参数传递(元组)

这一块是难点,注意听,仔细看,看完细细品。

咱们先定义一个打印的函数:

def print_a(a, b):
    print(a, b)复制代码

这时咱们能够打印出来 a 和 b ,可是若是我如今不止想打印两个参数了,我想打印 3 个参数,怎么办?

固然,咱们能够给这个函数再加一个参数 c ,没问题:

def print_a(a, b, c):
    print(a, b, c)复制代码

问题又来了,若是我想打印 100 个参数怎么办?

emmmmmmmmm,要么咱们就加 100 个形参?

固然不是这么写啦,咱们能够在参数 b 前面加一个 * ,表示这个参数是可变长参数,当前面的参数都赋值结束后,剩下的参数顺次给这个参数赋值。

def print_a(a, *b):
    print(a, b)


print_a(1, 2, 3, 4, 5, 6)复制代码

输出结果以下:

1 (2, 3, 4, 5, 6)复制代码

看到没,这里剩余的参数被转换成了元组的形式进行了输出打印。

变长度参数传递(字典)

咱们还能够给这个参数前面加两个 * ,表示这个参数能够传递的数据类型是以字典的形式传递的。

def print_b(a, **b):
    print_a(a, b)


print_b(1, q='q', w='w', e='e')复制代码

打印结果以下:

1 ({'q': 'a', 'w': 'b', 'e': 'c'},)复制代码

固然,变长参数传递时,元组和字典也能够不存在,以下:

print_a(1)
print_b(1)复制代码

结果以下:

1 ()
1 ({},)复制代码

这时,打印出来的就是空元组和空字符串了。

但愿各位同窗必定要本身动手敲代码。

示例代码

本系列的全部代码小编都会放在代码管理仓库 Github 和 Gitee 上,方便你们取用。

示例代码-Github

示例代码-Gitee

若是个人文章对您有帮助,请扫码关注下做者的公众号:获取最新干货推送:)
相关文章
相关标签/搜索