Skip to main content
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。 函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。

定义一个函数

函数代码块以 def 关键词开头,后接函数标识符名称和圆括号**()**
def function_name( parameters ): # 以 **def** 关键词开头,后接函数标名和圆括号**(参数)**
   "函数_文档字符串" # 函数说明
   function_suite # 函数内容以冒号起始,并且缩进
   return [expression] # 函数返回值,不写默认为返回 None
来个更具体的例子
# 定义函数
def printme( str ):
   "打印任何传入的字符串"
   print(str)
 
# 调用函数
printme("我要调用用户自定义函数!")
printme("再次调用同一函数")

# 输出结果
# 我要调用用户自定义函数!
# 再次调用同一函数

关键字参数

使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。这个和fultter的dart语言表现一致!
def printinfo( name, age ):
   print("Name: ", name)
   print("Age ", age)
 
#调用printinfo函数
printinfo( age=50, name="miki" )

默认参数

调用函数时,默认参数的值如果没有传入,则被认为是默认值。下例会打印默认的age,如果age没有被传入,和Js一样
#可写函数说明
def printinfo( name, age = 35 ):
   print("Name: ", name)
   print("Age ", age)
 
#调用printinfo函数
printinfo( age=50, name="miki" )
printinfo( name="miki" )

返回值

函数执行完毕后,向外部调用者返回一个结果
def sum( arg1, arg2 ):
   total = arg1 + arg2
   print "函数内 : ", total
   return total
 
# 调用sum函数
total = sum( 10, 20 )

匿名函数

python 使用 lambda 来创建匿名函数。以下等价于 Js的 sum=(arg1,arg2)⇒arg1 + arg2
# 可写函数说明
sum = lambda arg1, arg2: arg1 + arg2
 
# 调用sum函数
print "相加后的值为 : ", sum( 10, 20 )
print "相加后的值为 : ", sum( 20, 20 )

变量作用域

个程序的所有的变量并不是在哪个位置都可以访问的。访问权限决定于这个变量是在哪里赋值的。 变量的作用域决定了在哪一部分程序你可以访问哪个特定的变量名称。两种最基本的变量作用域如下:
  • 全局变量
  • 局部变量
定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。 局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。如下实例:
total = 0 # 这是一个全局变量
# 可写函数说明
def sum( arg1, arg2 ):
   #返回2个参数的和."
   total = arg1 + arg2 # total在这里是局部变量.
   print "函数内是局部变量 : ", total
   return total
 
#调用sum函数
sum( 10, 20 )
print "函数外是全局变量 : ", total