函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。
语法
def functionname( parameters ): function_suite return [expression]
实例
def printme( string ): print string return
函数调用
#!/usr/bin/python # -*- coding: UTF-8 -*- # 定义函数 def printme( string ): print( string ) return # 调用函数 printme("调用用户自定义函数!")
参数
以下是调用函数时可使用的正式参数类型:
- 必备参数
- 关键字参数
- 默认参数
- 不定长参数
必备参数
必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
#!/usr/bin/python # -*- coding: UTF-8 -*- def printme( string ): print( string ) return printme() #Traceback (most recent call last): # File "C:Users iannanDesktopmytest.py", line 8, in <module> # printme() #TypeError: printme() missing 1 required positional argument: 'string'
关键字参数
关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。
使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。
#!/usr/bin/python # -*- coding: UTF-8 -*- def printinfo( name, age ): print("Name:", name) print("Age:", age) return printinfo( age=20, name="tiannan" ) #Name: tiannan #Age: 20
缺省参数
调用函数时,缺省参数的值如果没有传入,则被认为是默认值。
#!/usr/bin/python # -*- coding: UTF-8 -*- def printinfo( name, age=100 ): print("Name:", name) print("Age:", age) return printinfo( age=20, name="tiannan" ) printinfo( name="tiannan" ) #Name: tiannan #Age: 20 #Name: tiannan #Age: 100
不定长参数
你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述2种参数不同,声明时不会命名。
def printinfo( arg1, *vartuple ): print("输出: ") print(arg1) for var in vartuple: print(var) return; printinfo( 10 ); printinfo( 70, 60, 50 ); #输出: #10 #输出: #70 #60 #50
匿名函数
python 使用 lambda 来创建匿名函数。
语法
lambda函数的语法只包含一个语句,如下:
lambda [arg1 [,arg2,.....argn]]:expression
如下实例:
sum = lambda arg1, arg2: arg1 + arg2; print(sum( 10, 20 )) print(sum( 20, 20 )) #30 #40
return 语句
def sum( arg1, arg2 ): total = arg1 + arg2 return total result = sum( 10, 20 ) print(result) #30
变量作用域
一个程序的所有的变量并不是在哪个位置都可以访问的。访问权限决定于这个变量是在哪里赋值的。
变量的作用域决定了在哪一部分程序你可以访问哪个特定的变量名称。两种最基本的变量作用域如下:
- 全局变量
- 局部变量
def sum( arg1, arg2 ): total = arg1 + arg2 #函数内print(total) print(total) total = 0 sum( 10, 20 ) #函数外print(total) print(total) #30 #0
python内置函数