前言:函数的坑有不少,本文只是小菜,大家可以查看此文python函数各种坑了解更多。
1、对于不可变类型全局变量,要想在函数内部使用他(不改变他),可以直接用。
# ‐*‐ coding: utf‐8 ‐*‐
number = 1000
def func():
print('函数内部',number ,id(number))
func()
print('函数外部',number,id(number))
函数内部 1000 1847914573552
函数外部 1000 1847914573552
2、对于不可变类型全局变量,要想在函数内改变他,也可以直接用,但是要定义新的变量名来接收值。
# ‐*‐ coding: utf‐8 ‐*‐
number = 1000
def func():
print('函数内部',number ,id(number))
new_num = number + 1
print('函数内新的数值',new_num,id(new_num))
func()
print('函数外部',number,id(number))
函数内部 1000 2009241399024
函数内新的数值 1001 2009241647696
函数外部 1000 2009241399024
3、对于不可变类型全局变量,要想在函数内部使改变他,但是不定义新的变量名,则必须使用global。
# -*- coding: utf-8 -*-
number = 1000
def change():
global number
number = number + 1 # 没有global,这句话会报错
print('函数内部',number ,id(number))
change()
print('函数外部',number,id(number))
函数内部 1001 2511023615728
函数外部 1000 2510993862352
# -*- coding: utf-8 -*-
number = 1000
def change():
# global number
number = number + 1
print('函数内部',number ,id(number))
change()
print('函数外部',number,id(number))
Traceback (most recent call last):
File "D:/pyscript/py3script/linshi.py", line 10, in change()
File "D:/pyscript/py3script/linshi.py", line 7, in change
number = number + 1
UnboundLocalError: local variable 'number' referenced before assignment