函数
一、定义
1、概念
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段
2、基本语法
def functionname( parameters ):
\"函数_文档字符串\"
function_suite
return [expression]
3、定义函数时的简单规则
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()
- 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明
- 函数内容以冒号起始,并且缩进
- return [表达式] 结束函数,选择性地返回一个值给调用方,可以返回任何的数据类型。
返回多个值的时候,往往返回的是tuple类型,不带表达式的return相当于返回 None
二、函数的调用
1、参数
- 位置参数
根据位置进行参数的传递,不可缺少
def test(a,b):
return a*b
res = test(2,4)
- 关键字参数
对参数的关键字进行传入,使用关键字参数允许可定义参数的位置进行调换,需要注意的是,位置参数必须在关键字参数的左侧。
def test(a,b,c):
return a*b*c
>>> test(2,c=3,b=6)
36
- 默认参数
默认参数往往指的是在定义函数的时,给参数定义一个默认的值,这样在调用函数时,如果不传入参数,则会使用默认的值。
def test(str1=\"hello\",str2=\"python\"):
print(\"{str1},{str2}\".format(str1=str1,str2=str2))
>>> test()
hello,python
- 不定长参数
可以让函数接收多个参数,不定长参数在定义时不需要命名,定义方法:def functionname([formal_args,] *args,**karg ):
arg会将多个参数以tuple形式返回,kwargs则以dict形式返回
def test(x,*args,**kwargs):
print(x)
print(args)
print(kwargs)
>>> test(1,111,22,3,k1=1,k2=2)
1
(111, 22, 3)
{\'k2\': 2, \'k1\': 1}
三、变量的作用域
变量的作用域即是变量的访问范围,也叫做命名空间,第一次给变量赋值的位置决定了变量的作用域。
1、全局变量
定义在文件顶层的变量,整个程序中都能进行调用,一般以大些字母定义变量名
NAME = \"wind\"
def test():
print(NAME)
test()
结果:wind #当函数在本地域找不到变量时就会调用全局变量
NAME = \"wind\"
def test():
NAME = \"storm\"
print(NAME)
test()
print(NAME)
结果:storm wind #当作用域内的变量和外部变量重名时,会遵循本地优先原则,但并不会影响外部的变量
NAME = [ \"wind\",\"kingdom\" ]
def test():
NAME.append(\"storm\")
print(NAME)
test()
print(NAME)
结果:[ \"wind\",\"kingdom\",\"storm\"]
[ \"wind\",\"kingdom\",\"storm\"]
#若全局变量为列表这种可变类型的数据,则即使在没有声明全局变量的情况下也会被改变
- global语句
在函数内部域声明局部变量为全局变量
NAME = \"wind\"
def test():
global NAME
NAME = \"storm\"
print(NAME)
test()
print(NAME)
结果:storm storm
2、局部变量
只在函数内部有效调用的变量,在相应作用域外部无法被调用。
def test():
a = 10
def show():
a = 20
print(a)
结果:10 #a=20为show函数作用域的局部变量,无法被test()函数调用
- nonlocal语句
nonlocal声明的变量,若没有被赋值,则该变量则就是上层函数的本地变量。
def test():
a = 10
def show():
nonlocal a
b = 30
c = a + b
print(c)
show()
test()
结果:40
版权声明
本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。




