初学python-day9 函数1(已更新)
函数
一。函数基础
1.什么是函数
在一个完整的项目中,某些功能会被重复使用,那么会将代码段封装成函数,当我们要使用的时候,直接调用即可。
函数是可以实现一定的小程序或者功能。
优点:
增加了代码的重复使用率,简化了代码的结构。
减少了代码量,提高可读性。
提高了代码的维护性。
2.函数如何定义
主体结构
def 函数名([参数]):
pass
函数名:使用标识符的命名规则
注意:
函数区分大小写;
函数是可以重名的,但是会被覆盖;
3.函数调用
函数的使用称为调用函数。
格式: 函数名([参数])
注意:
调用函数必须在函数定义的下方调用,否则报错。
参数
本质:实参给形参赋值的过程。
4.函数返回值
关键字:return
如果return不写,相当于return None
作用:将值返回给函数调用处
使用:
def 函数名():
pass
return 值/表达式
1 def num(): 2 x = 1 3 y = 1 4 return x + y # 函数体遇到return就认为函数执行完毕,后面的代码不会再执行 5 6 7 a = num() 8 print(a)
运行结果:
2
Process finished with exit code 0
注意:
函数体遇到return就认为函数执行完毕,后面的代码不会再执行
return可以返回多个值:字典、列表、元组、集合、字符串.....
二。函数的提升
1.函数的参数
形参:在函数定义的时候,写在括号里的变量
实参:在函数调用处所传递的参数
注意:
形参的数量在理论上是无限的,但最好不要超过6,7个,类型也没有限制
实例:
1 def test(x, y): 2 return x + y 3 4 5 print(test(1, 2))
运行结果:
3
2.参数默认值
主体结构:
def 函数名(参数名=值,[参数名=值].....)
pass
实例:
1 def test(x=1, y=2): # 有默认值的放在后面,def test(x, y=2) 2 print(x, y) 3 return x + y 4 5 6 print(test()) 7 print(test(3, 4))
运行结果:
1 2 3 3 4 7
注意:
1.如果函数定义有形参,且没有默认值,则必须传递实参
2.如果函数定义有形参,且有默认值,则可以不传递实参
3.如果函数定义有形参,且有默认值,如果传递实参,则参数值为你传递的实参的值
4.如果给函数参数设置默认值,则有默认值的放在右侧,没有默认值的放在左侧,如果都有默认值,则对位置没有要求。
3.关键字参数
作用:可以使用关键字参数改变形参与实参一一对应的关系,也就是说,我们可以指定某个形参传递实参。
实例:
1 def test(x=1, y=2, z=3): 2 print(x, y, z) 3 4 5 test(y=4)
运行结果:
1 4 3
Process finished with exit code 0
注意:
1. 如果给形参关键字,可以全部都给关键字
2. 如果有一部分给关键字,一部分不给关键字,则给关键字的参数都写在右侧,没有关键字的,写在左侧。
4.不定长参数
概述:就是传入的参数个数不确定,或者说能处理比定义时更多的参数。
*args
不确定参数*形参名,以元组的形式去接收
在形参变量前添加*变量会存储所有未命名的变量的参数,如果在函数调用处,不传递实参,则此时*args为空元组。
实例:
1 def test(*args): 2 print(args) 3 4 5 test(1, 2, 3)
注意:
1.如果不给函数传递实参,则args接收为空元组
2.*args可以和普通形参组合使用,*args需要放在最右侧,用来接收不定长参数的值。
**kwargs
不定长关键字参数的接收,接收之后为字典类型。
实例:
1 def test(**kwargs): 2 print(kwargs) 3 print(type(kwargs)) 4 5 6 test(name='xm') 7 8 9 10 11 12 运行结果: 13 14 {'name': 'xm'} 15 <class 'dict'> 16 17 Process finished with exit code 0
函数调用处的*
实例:
1 def test(a, b, c): 2 print(a, b, c) 3 4 5 str1 = '123' 6 test(*str1) # str1必须是一个可迭代对象才可以用* 7 8 9 10 11 12 运行结果: 13 1 2 3 14 15 Process finished with exit code 0
注意:
1.在调用处给实参前添加*会将当前可迭代对象拆分成多个实参,形参的位置也要有多个形参去接收或者可以在一个形参前添加*,为不定长参数接收。
函数调用处的**
实例:
1 def test(**kwargs): 2 print(kwargs) 3 4 dict1 = {'name': 'xm'} 5 test(**dict1) 6 7 8 9 10 11 12 13 14 运行结果: 15 {'name': 'xm'} 16 17 Process finished with exit code 0
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号