人生苦短,我选Python
前文传送门
小白学Python(1):开篇
小白学Python(2):基础数据类型(上)
小白学Python(3):基础数据类型(下)
小白学Python(4):变量基础操作
小白学Python(5):基础运算符(上)
小白学Python(6):基础运算符(下)
小白学Python(7):基础流程控制(上)
小白学Python(8):基础流程控制(下)
小白学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=1,x=2的时候y=2。
所以,函数就是重复使用的代码。
定义函数
定义函数的规则如下:
函数代码块以def关键词开头。后接函数名称和圆括号()。圆括号中可以使用参数。函数内容以冒号起始,并且缩进。return结束函数,可以选择性地返回一个值。不带return相当于返回None。
定义一个函数大致长这样:
def函数名(形式参数):函数体return返回值
def是系统关键字,至于什么是系统关键字后面我们再聊,这里仅需要知道def是用来定义函数的即可。
系统关键字在PyCharm中都会高亮显示,如果没有高亮,那么一定是你打错了。
比如我们现在定义一个求两数之和的函数:
defadd(a,b):c=abreturnc
这个有看不懂的么?
没有的话我就接着往下聊了,有的话就给我留言吧。
以上我们就完成了一个函数的定义。
函数调用
函数定义好以后我们还需要调用函数才能执行,一个函数放在那里是不会自动执行的。
废话,我哪知道你要传什么参数过来。。。
我们调用一下刚才写好的函数:
c=add(1,2)print(c)
打印结果如下:
3
这里我们介绍两个名词:
实际参数:简称实参,我们刚才在调用函数的时候传入1和2就是实参。主要体现在实际执行函数的时候使用。形式参数:简称形参,我们刚才在定义函数的时候add(a,b)中的a和b就是形参。主要体现在它只是一个形式和格式,真正要执行的时候还是要看传入的实参。
整个函数调用就是将实参传递给形参,完成计算后返回,并且打印返回值。
Python中有很多内置的函数,比如我们之前常用的print()、len()、type()、id()等等。
这些函数都是内置的,无需我们定义,所以可以直接拿来使用。
参数的传递按照位置顺序传递
参数的传递有很多种方式,比如刚才我们调用时使用的就是按照位置顺序传递。
add(1,2)按照赋值传递
除了按照位置顺序传递,我们还可以按照赋值来传递:
这里我们先定义一个减法函数。
defsubtraction(a,b):returna-bprint(subtraction(b=5,a=10))
打印结果如下:
5默认赋值
那么除了以上两种情况,还有没有其他情况?
当然还有,如果参数有两个,但是其中一个可能不会传递,这时我们可以给它一个默认值。
这里我们定义一个除法:
defdivision(a,b=1):returna/bprint(division(5))print(division(10,5))
在除法中,除数不能为0,不然会报错,这里我们给了一个默认值是1,当除数不存在的时候,我们可以取到默认值。
结果打印如下:
5.02.0变长度参数传递(元组)
这一块是难点,注意听,仔细看,看完细细品。
我们先定义一个打印的函数:
defprint_a(a,b):print(a,b)
这时我们可以打印出来a和b,但是如果我现在不止想打印两个参数了,我想打印3个参数,怎么办?
当然,我们可以给这个函数再加一个参数c,没问题:
defprint_a(a,b,c):print(a,b,c)
问题又来了,如果我想打印100个参数怎么办?
emmmmmmmmm,要么我们就加100个形参?
当然不是这么写啦,我们可以在参数b前面加一个*,表示这个参数是可变长参数,当前面的参数都赋值结束后,剩下的参数顺次给这个参数赋值。
defprint_a(a,*b):print(a,b)print_a(1,2,3,4,5,6)
输出结果如下:
1(2,3,4,5,6)
看到没,这里剩余的参数被转换成了元组的形式进行了输出打印。
变长度参数传递(字典)
我们还可以给这个参数前面加两个*,表示这个参数可以传递的数据类型是以字典的形式传递的。
defprint_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
您的扫码关注,是对小编坚持原创的最大鼓励:)