#函数变量的作用域
#全局变量:整个代码段中都是可以访问,但不要试图在函数内修改全局变量,
#因为那样PYTHON会自动在函数内部新建一个名字一样的局部变量代替
def discounts(price,rate):
final_price = price * rate
#old_price = 20
global old_price #global 能够在函数内修改全局变量
old_price = 40
print('在函数内修改全局变量0ld_price',old_price)
return final_price
old_price = float(input('请输入原价:'))
rate = float(input('折扣率:'))
new_price = discounts(old_price,rate)
print('全局变量old_price',old_price)
print('折扣后的价:',new_price)
#global 能够在函数内修改全局变量
请输入原价:100
折扣率:0.6
在函数内修改全局变量0ld_price 40
全局变量old_price 40
折扣后的价: 60.0
#闭包 在一个函数内部f(y),对在外部作用域f(x)的变量进行引用,
#那么内部函数f(y)就被认为闭包,f(y)函数内部不能对外部变量修改,只能进行访问
def f(x):
def f(y):
nonlocal x
x = 5
print('x,y',x,y)
return x * y
return f
'''
>>> f(2)(3)
x,y 2 3
6
nonlocal :内部函数能够修改外部函数变量
>>> f(2)(3)
x,y 5 3
15
'''
'''
g = lambda x : 2 * x +1
#print(g(3))
#dict1= dict((1,2),(2,4)) 字典
#dict()函数可以是一个序列但不能太多()
dict1= dict(((1,2),(2,4)))
dict2 = dict(a=1,b=2)
dict2['c']=3
#print(dict2)
dict3 = {}
#dict3.fromkeys(keys,values)
#items() = keys() + values()
a =dict3.fromkeys((1,2,3),'lla')
b = a.items()
c = a.values()
d = a.get(1) #获取键对应的值
print(b)
print(c)
print(d)
'''
#集合:集合里面的元素 唯一
list1 = [1,2,5,4,6,3,2,1]
list1 = sorted(list(set(list1)))
#print(list1)
for i in range(10):
if i % 2 != 0:
print(i)
#continue
break
i += 2
print('i1',i)
'''
continue 终止本轮循环并开始下一轮循环
没有加continue i +=2 都执行了
i1 2
1
i1 3
i1 4
3
i1 5
i1 6
5
i1 7
i1 8
7
i1 9
i1 10
9
i1 11
加了continue i +=2 只执行了偶数,将奇数进行循还后不进行 i += 2操作
i1 2
1
i1 4
3
i1 6
5
i1 8
7
i1 10
9
break 当条件满足时,终止循环
i1 2
1
'''