python--初识函数
什么叫函数?
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。
定义一个函数
你可以定义一个由自己想要功能的函数,以下是简单的规则:
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
- 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
- 函数内容以冒号起始,并且缩进。
- return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
语法
def functionname( parameters ): "函数_文档字符串" function_suite return [expression]
返回值
1.没有返回值
- 写return
- 不写return
- 有时写return None,不常用
2.有一个返回值:直接用return接收
3.有多个返回值:返回多值需要多值接收,返回值是元组,不能修改返回值所以要使用元组
def func_1() return 1,2 r1,r2 = func_1() print(r1,r2) $1,2 def func_1() return 1,2,3 r = func_1() print(4) $(1,2,3) 在终端输入,python内部有机制,下面分别对列表,元组,字典进行解包操作 >>>1,2 1,2 >>> a,b,c = ['a','b','c'] >>> a 'a' >>> b 'b' >>> c 'c' >>> a,b,c = (1,2,3) >>> a 1 >>> b 2 >>> c 3 >>> d1 = {'k1':'kk','v1':'vv'} >>> a,c = d1 >>> a 'k1' >>> c 'v1'
函数的参数
实际的要交给函数的内容,简称实参
在定义函数的时候它只是一个形式,表示这里有一个参数,简称形参。
以下是调用函数时可使用的正式参数类型:
- 位置参数
- *args :按位置传参的值组成一个元组
- 默认参数
- **kwargs :按关键字传参,组成一个字典
参数顺序: 位置参数,*arge,默认参数,**kwargs
动态参数的另一种传参方式 :
def func_1(*args) : print(args) li = [1,2,3,4] func_1(*li) #实参的星老师说是顺序打散,我的理解是解包 也就是说args = 1,2,3,4 如果直接传列表,args类型为以列表形式存储的元组 如果传*li,args类型为以列表各个值单独存储的元组 def func_2(**kwargs) : print(kwargs) dic_1 = {'k1':'kk','v1':'vv'} func_2(**dic_1)
参数解包
# 参数解包:将整个list当做参数传给函数 list = [1, 2, 4] def add_fn(a, b, c): return a + b + c sum = add_fn(*list) print("参数解包:", sum) # ------------------------------ def func(*args) print(args) func(*list) # ------------------------------ 所谓的解包(Unpacking)实际上可以看做是去掉()的元组或者是去掉{}的字典。 user = {'name': "Trey", 'website': "http://treyhunner.com"} defaults = {'name': "Anonymous User", 'page_name': "Profile Page"} print({**defaults, **user}) ${'page_name': 'Profile Page', 'name': 'Trey', 'website': 'http://treyhunner.com'} # -------------------------------- #值的解压 msg='hello' l=[1,2,3] # a,b,c,d,e=msg # print(a,b,c,d,e) # a,_,_,_,e=msg *_,a = msg # a,*_,e=msg print(a) # print(e)