函数参数传递的问题
传递的是地址值还是数值呢?
def fun1(a1):
print(a1)
name = 'xiaohu'
fun1(name)
python中函数的调用参数传递的是地址值
========================
def fun1(a1):
a1.append(666)
list1 = [1,2,3]
fun1(list1)
print(list1)
==========================
def fun1(a1):
b1 = a1.upper()
s1 = 'shujia'
fun1(s1)
print(s1)
作用域
作用域:实际上就是一块共享的区域
python程序中其实有两种作用域:
- python的py文件中一整块是一个作用域
- python中的函数内部是一个独立的作用域
python
name = '小虎'
age = 18
if 1==1:
s1 = 10
for i in range(10):
pass
print(name,age,s1,i) # 这里的name,age,s1,i其实都同属于一个大的作用域
全局变量和局部变量
- 全局变量:将变量定义在函数的外部
- 局部变量:将变量定义在函数的内部
python
全局变量
name = '小虎'
age = 18
def fun1():
# 局部变量
a1 = 3
b1 = 4
c1 = 'xiaohu'
print(a1)
print(b1)
print(c1)
fun1()
- 局部作用域可以访问外部作用域的变量
- 函数与函数之间的作用域的变量是不可以互相访问的
- 实际开发中,如果定义的变量是全局变量的话,使用大写字母下划线拼接;如果定义的是局部变量,使用小写字母下划线拼接
python
全局变量
NAME = '小虎'
AGE = 18
def fun1():
# 局部变量
a1 = 3
b1 = 4
c1 = 'xiaohu'
print(a1)
print(b1)
print(c1)
fun1()
global关键字
可以修饰局部变量,将局部变量变成全局变量
python
全局变量
NAME = '小虎'
AGE = 18
def fun1():
# 局部变量
a1 = 3
b1 = 4
c1 = 'xiaohu'
print(a1)
print(b1)
print(c1)
fun1()
print(a1)