基础规则:
函数代码块以def关键词开头,后接函数标识符名称和圆括号()。
def 函数名(参数列表): 函数体
讯享网
任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数(可多个,但尽量不要多于四个)。
函数的第一行语句可以选择性地使用文档字符串——用于存放函数说明。
函数内容以冒号起始,并且缩进。
return [表达式]结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
讯享网def area(width, height): return width * height w = int(input("请输入宽")) h = int(input("请输入高")) print("面积是 =", area(w, h))
函数调用
定义函数,指定函数所包含的参数和代码块结构,通过另一个函数进行调用执行。
def zhengyuting(str): print(str) return zhengyuting("Expecto Patronum!") #调用函数 zhengyuting("Ridiculous!") #再次调用函数
参数传递
讯享网zyt=[1,2,3,4,5] #[1,2,3,4,5]的类型为List zyt="zhnegyuting" #"zhnegyuting" 的类型为String,zyt没有类型,它是一个变量,是一个对象的引用(一个指针),可以指向各种类型
参数
调用函数时可以使用的参数类型:
①必需参数:以正确的顺序传入函数,调用时的数量和声明时的一致,调用函数时必须传入参数,否则报错。

讯享网
②关键字参数
函数调用使用关键字参数来确定传入的参数值,使用关键字参数允许与声明时的不一致(Python解释器能够用参数名匹配参数值)

def zhengyuting(str): print(str) return zhengyuting(str = "Expecto Patronum!") #使用参数名进行函数调用
③默认参数
调用函数时,没有传递参数,则使用默认参数。

④不定长参数
一个函数能处理比当初声明时更多的参数。
使用一个星号即*以元组形式导入。(单独出现星号 * 后的参数必须用关键字传入。)
使用两个星号即的参数会以字典的形式导入。
讯享网 def f(a,b,*,c): return a+b+c f(1,2,3) # 报错 f(1,2,c=3) # 正常
def zhengyuting(one,*thetuple): #使用星号*的参数以元组形式导入,以存放所有未命名变量参数 print(one) print(thetuple) zhengyuting(1,2,3,4)

如果在函数调用时没有指定参数,它就是一个空元组,可以不向函数传递未命名的变量。
对象
可更改对象(可变类型):list,dict(类比:整容)
不可更改对象(不可变类型):string,tuples,numbers(类比:换人)
可更改表示它本身没有改变,只是它内部的一部分值被改变。
不可更改的对象在被修改时,实际上已经是新的对象。
可变类型在参数传递时,函数外部的参数也会受到影响,而不可变类型则不会受到影响。
讯享网#可变类型 def zhengyuting(zytlist): zytlist.append([1,2,3]) print("inner",zytlist) return zytlist=[4,5,6] zhengyuting(zytlist) print("outer",zytlist)

#不可变类型 def zhengyuting(a): a = 3 b = 1 zhengyuting(b) print(b)

匿名函数
lambda 可以创建匿名函数。
匿名即不再使用 def 语句这样标准的形式定义一个函数。
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
语法格式:
讯享网lambda [arg1 [,arg2,.....argn]]:expression

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/63250.html