文章目录
2018-11-27 18:28:32
1.4 函数的变量
- Python中的任何变量都有特定的作用域
- 在函数中定义的变量一般只能在该函数内部调用,这些只能在程序的特定部分使用的变量叫局部变量
- 在一个文件顶部定义的变量,可供文件中任何函数调用的叫全局变量
- 定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域
注:
1.全局变量不能在函数内部直接修改它的值,需要用global声明,不然会报错
2.在函数内部使用global申明的变量。在函数外部也可以调用,但是不建议这样做
#!/usr/bin/python
x = 100
def fun():
x=1
y=1
print locals() #获取fun()函数内部所有的变量,**生成的是一个字典**
print locals() #获取整个程序/文件的所有变量,这里显示的都是一些内置变量
--------------结果如下---------------------
{'y': 1, 'x': 1}
{'__builtins__': <module '__builtin__' (built-in)>, '__file__': 'def.py', '__package__': None, 'x': 100, 'fun': <function fun at 0x7fbcf66c55f0>, '__name__': '__main__', '__doc__': None}
1.5 函数的返回值
- 函数被调用后会返回一个指定值
- 函数调用后默认返回None
- return可以返回任意值
- return之后,函数会终止运行,函数不会继续往下走了
- 函数里一般不适用print,print多数用来调试,如果需要返回值用return
- 程序运行到所遇到的第一个return即返回(退出def块),不会再运行第二个return,但并不是一个函数能值有一个return,可以有多个
x = 1
y = 2
def a(x, y):
z = x + y
return z
print (a(x,y)
-------------------------------
x = 1
y = 2
def a(x, y):
z = x + y
print z
print (a(x,y))
注:在交互模式下,return的结果会自动打印出来,而作为脚本单独运行时则需要print函数才能显示。
函数作为返回值返回
def a(*args):
def sum():
x=0
for n in args:
x=x+n
return x
return sum
a(1,2,3,4,5,6,7,8,9) #这时候a并没有执行,而是返回一个指向求和的函数的函数名sum 的内存地址。
f=a(1,2,3,4,5,6,7,8,9)
print(type(f))
print(f()) # 调用f()函数,才真正调用了 sum 函数进行求和,
def a(*args):
def sum():
x=0
for n in args:
x=x+n
return x
return sum
a(1,2,3,4,5,6,7,8,9) #这时候a并没有执行,而是返回一个指向求和的函数的函数名sum 的内存地址。
f=a(1,2,3,4,5,6,7,8,9)
print(type(f))
print(f()) # 调用f()函数,才真正调用了 sum 函数进行求和,