python:函数提高

1.变量的作用域与变量修改

局部变量:定义在函数内部,生存范围在函数内部。

全局变量:在函数内部外部都可生效的变量。

一.局部变量:

def test1():
    a=100
    print(a)
test1()
print(a)

运行结果

100
Traceback (most recent call last):
  File "D:/pycharm项目/数值类型.py", line 5, in 
    print(a)
NameError: name 'a' is not defined

二.全局变量:

a=1000
def test2():
    print(a)
def test3():
    print(a)
test2()
test3()

运行结果

1000
1000

三.修改:

a=1000
def test1():
    a=200
    print(a)
def test2():
    print(a)
def test3():
    global a
    a=200
    print(a)
print('原来的变量是:%d'%a)
test1()
test2()
test3()
print('现在的a是:%d'%a)

运行结果

原来的变量是:1000
200
1000
200
现在的a是:200

即如果函数需要修改全局变量可以用global对函数内部变量进行声明。

2.函数返回值作为参数

def test1():
    return 30
def test2(x):
    print(x)
test2(test1())


运行结果

30

3函数的参数

位置参数:调用时根据函数定义的参数位置传递参数。

关键字参数:键=值 形式

缺省参数:默认参数

不定长参数(组包):包裹位置参数、包裹关键字参数

一.位置参数:

def info(name,age,gender):
    print(f'姓名{name},年龄{age},性别{gender}')
info('jack',20,"man")
# info('jack',20)
info(20,'jack','man')

运行结果

姓名jack,年龄20,性别man
姓名20,年龄jack,性别man

二.关键字参数:

def info(name,age,gender):
    print(f'姓名{name},年龄{age},性别{gender}')
info(name='jack',age=20,gender='man')
info(age=20,name='jack',gender='man')

运行结果

姓名jack,年龄20,性别man
姓名jack,年龄20,性别man

三.缺省参数:

def info(name,age,gender='man'):
    print(f'姓名{name},年龄{age},性别{gender}')
info('jack',20)
info('jack',20,'woman')

运行结果

姓名jack,年龄20,性别man
姓名jack,年龄20,性别woman

四.不定长参数:

包裹位置参数:

def info(*args):
    print(args)
info('jack')
info('jack',20)
info('jack',20,'man')

运行结果

('jack',)
('jack', 20)
('jack', 20, 'man')

即返回的结果以元组形式出现。

包裹关键字参数:

def info(**kwargs):
    print(kwargs)
info()
info(name='jack',age=20,gender='man')

运行结果

{}
{'name': 'jack', 'age': 20}

即返回的结果以字典形式出现。

4.元组与字典拆包

一.元组拆包:

n1,n2,n3=(1,2,3)
print(n1)
print(n2)
print(n3)
def num():
    return 100,200,300
print(num())
n4,n5,n6=num()
print(n4)
print(n5)
print(n6)

运行结果

1
2
3
(100, 200, 300)
100
200
300

二.字典拆包:

dict1={"name":'jack','age':20,'gender':'man'}
a,b,c=dict1
print(a)
print(b)
print(c)
print(dict1[a])
print(dict1[b])
print(dict1[c])

运行结果

name
age
gender
jack
20
man

5.变量交换

#借助第三个变量c来完成a,b之间的交换
a=1
b=2
c=0
c=a
a=b
b=c
print(a,b,c)
#直接交换
a,b=2,1
print(a,b,c)
print(f'a:{id(a)},b:{id(b)}')
a,b=2,1
print(a,b,c)
print(f'a:{id(a)},b:{id(b)}')

运行结果

2 1 1
a:140709036099264,b:140709036099232
2 1 1
a:140709036099264,b:140709036099232

即交换前后存储地址是不变的,变的只是变量名。

你可能感兴趣的:(python,开发语言)