Python 定义函数使用 def 关键字,通常格式以下:python
def function_name(parameter_list): pass
默认状况下,参数值和参数名称按函数声明中定义的顺序进行匹配。express
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。app
任何传入参数和自变量必须放在圆括号中间,圆括号之间能够用于定义参数。ide
函数的第一行语句能够选择性地使用文档字符串描述函数说明。函数
函数内容以冒号起始,而且进行缩进。工具
函数的定义示例以下:学习
def add(x, y): result = x + y return result
函数使用return [表达式] 结束函数,返回一个或多个值给调用方。不带表达式的return至关于返回 None。开发工具
在学习过程当中有什么不懂得能够加个人 python学习资源qun,855-408-893 群里有不错的学习视频教程、开发工具与电子书籍。 与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容 def get_fruits(): apple = "Apple" banana = "Banana" orange = "Orange" return apple, banana, orange a,b,c = get_fruits() print(a, b, c)
函数定义只给了函数一个名称,指定了函数里包含的参数和代码块结构。ui
函数调用直接使用定义的函数名称以及传递相应的参数进行调用。code
Python默认设置了函数的最大递归调用次数,开发者能够直接进行设置。设置方法以下:
#!/usr/bin/python3 import sys sys.setrecursionlimit(100) # 设置最大递归次数为100
必须参数是函数调用时必须传递的参数。
#!/usr/bin/python3 def add(x, y): result = x + y return result add(3, 2)
关键字参数用于函数调用时,使用形式参数关键字将实际参数赋值给函数的相应形式参数,函数调用过程当中传递实际参数顺序能够与形式参数顺序不匹配,但全部的必须参数必须被赋值。
#!/usr/bin/python3 def add(x, y): result = x + y return result add(y=2, x=3)
上述代码中,add函数的调用传递的实际参数经过指定关键字参数实际指定相应的形式参数,没必要按照形式参数顺序匹配,但必须参数都必须被传递。
函数在定义过程当中能够为指定参数默认的值,而且必须参数必须放在默认参数的左侧。
#!/usr/bin/python3 def print_student(name, gender="男", age=28): print(name) print(gender) print(age) print_student("Bauer", "男", 30) print_student("Lee") print_student("Lisa","女") print_student(age=30, name="Bob")
函数调用时,可使用关键字参数对形式参数进行赋值,默认参数能够缺省,但必须参数必须被赋值,必须参数可使用关键字参数赋值。若是必须参数不使用关键字参数,则必须参数必须严格按照函数定义的顺序传递,其默认参数可使用关键字参数选择性赋值,没有使用关键字参数传递的默认参数将使用默认值。
可变参数经过使用*
修饰形式参数定义可变参数。
函数定义时,能够定义可变参数,在函数调用时传递可变的多个实际参数。
#!/usr/bin/python3 def add(*args): result = 0; for x in args: result += x return result c = add(1, 2, 3, 4) print(c) c = add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) print(c) tup1 = 1, 2, 3, 4 c = add(*tup1) # 传入序列 print(c) list1 = [1, 2, 3] c = add(*list1) print(c)
对应定义了可变参数的的函数,若是须要传入序列做为实际参数,须要在序列前加*
。
若是函数定义时有可变参数和默认参数,函数调用时可使用关键字参数用于指定默认参数。
#!/usr/bin/python3 def add(x, *args, y=100): result = x + y; for i in args: result += i return result c = add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) # 155 print(c) c = add(1, 2, 3, 4, 5, 6, 7, 8, 9, y=10) # 55 print(c)
Python中,若是函数定义时可变参数放在默认参数的左侧,则默认参数须要使用关键字参数显式指定。
关键字可变参数经过使用**
修饰形式参数定义,关键字可变参数为字典类型,关键字可变参数属于可选参数。
#!/usr/bin/python3 def average_score(**args): result = 0; for key, value in args.items(): result += value print(key + ": ", value) result = result / len(args) print("Average score is ", result) return result book = {"Bauer": 90, "Bob": 100, "Lisa": 70, "Lee": 100} average_score(**book) average_score(Bauer=100, Lisa=70, Lee=100)
函数调用时,关键字可变参数能够传递多个键值对,页能够直接传递dictionary类型变量,此时须要使用**
修饰字典变量。
python 使用 lambda表达式来建立匿名函数,函数定义以下:
lambda [arg1 [,arg2,.....argn]]:expression
Lambda表达式定义的匿名函数的函数体不是一个代码块,所以,仅能在lambda表达式中封装有限的逻辑。
Lambda表达式拥有本身的命名空间,且不能访问自有参数列表外或全局命名空间里的参数。
虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增长运行效率。
#!/usr/bin/python3 # -*- coding:utf-8 -*- sum = lambda arg1, arg2: arg1 + arg2; # 调用sum函数 print(sum(10, 20)) print(sum(20, 20))
程序的全部的变量并非在任何位置均可以访问的,访问权限决定于变量是在哪里赋值的。变量的做用域决定了在哪一部分程序能够访问哪一个特定的变量名称。
定义在函数内部的变量拥有局部做用域,定义在函数外的拥有全局做用域,代码块内部局部变量会覆盖全局变量,在局部做用域内修改全局变量的值时,须要使用global关键字对相应全局变量进行声明,代表本做用域内使用的是全局变量。
局部变量只能在其被声明的函数内部访问,而全局变量能够在整个程序范围内访问。调用函数时,全部在函数内声明的变量名称都将被加入到做用域中。
在学习过程当中有什么不懂得能够加个人 python学习资源qun,855-408-893 群里有不错的学习视频教程、开发工具与电子书籍。 与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容 #!/usr/bin/python3 # -*- coding:utf-8 -*- base = 100 def sum(*args): global base base = 0 result = 0; for i in args: result += i return result + base; c = sum(1,2,3,4,5,6,7,8,9,10) print(c) # 55 print(base) # 0