#in[1]
#全局变量的运用
a1=2 #定义全局变量a1
def fun():
print(a1)
a2=99
print("i am in fun")
print(a2) #此处为局部变量
print(a1)
fun()
#out[1]
2
#从此行之后为fun()的结果
2
i am in fun
99
#in[2]
#若在全局输出局部变量会出现的情况
a1=2 #定义全局变量a1
def fun():
print(a1)
a2=99
print("i am in fun")
print(a2) #此处为局部变量
print(a1)
print(a2)
#out[2]
2
Traceback (most recent call last):
File "E:\统计\python\3.1.py", line 10, in
print(a2)
NameError: name 'a2' is not defined
#in【3】
a=1
b=2
def fun(c,d):
e=111
print("Locals={}".format(locals()))
print("Globals={}".format(globals()))
fun(100,200)
#out[3]
Locals={'c': 2, 'd': 3, 'e': 111}
Globals={'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': , '__spec__': None, '__annotations__': {}, '__builtins__': , '__file__': 'E:\\统计\\python\\3.1.py', 'a': 1, 'b': 2, 'fun': }
#in[4]
x=100
y=100
z1=x+y
z2=eval("x+y")
print(z1)
print(z2)
#out[4]
200
200
#in[5]
#exec()范例
x=100
y=100
z1=x+y
z2=exec("x+y")
print(z1)
print(z2)
#out[5]
200
None
#in【6】
x=0
def fun():
x+=1
print(x)
fun()
fun()
#out[6]
Traceback (most recent call last):
File "E:\统计\python\3.1.py", line 8, in
fun()
File "E:\统计\python\3.1.py", line 7, in fun
fun()
File "E:\统计\python\3.1.py", line 7, in fun
fun()
File "E:\统计\python\3.1.py", line 7, in fun
fun()
[Previous line repeated 975 more times]
File "E:\统计\python\3.1.py", line 6, in fun
print(x)
RecursionError: maximum recursion depth exceeded while pickling an object
注意递归的时候一定要注意递归次数,不要无限循环
#in[7]
#斐波那契
def f(n):
if n == 1:
return 1
if n ==2:
return 2
return f(n-1)+f(n-2)
for i in range(1,11) :
print(f(i))
#out[7]
1
2
3
5
8
13
21
34
55
89
#in【8】
#创建空列表
l1=[]
print(type(l1))
print(l1)
l2=[1,2,3]
print(type(l2))
print(l2)
#iut[8]
[]
[1, 2, 3]
#in[9]
#访问列表中的数
l=[1,5,3,6,9,7,8]
print(l[2])
#out[9]
3
#in[10]
#对列表进行截取
l=[1,3,4,5,6,9,78,5]
#注意截取的范围,包含左边的下标值,不包含右边的下标值
print(l[2:5])
#下标为空时,截取所有
print(l[:])
#分片操可以控制增长幅度,默认幅度为1
print(l[1:6:2])
#下标可以超出范围,超出后不考虑多余的
#下标值可以为负数,为负数时表示顺序从右往左(从-1,-2,-3.。。。)
#out[10]
[4, 5, 6]
[1, 3, 4, 5, 6, 9, 78, 5]
[3, 5, 9]
#in【11】
#分片操作之负数下标
l=[1,2,3,4,5,6,7,8]
print(l[-6:-1])
#正常情况下左边的值要比右边的值小
#如果一定左边的要比右边的大,则步长一定要用负数,表示从右往左
print(l[-2:-5:-1])
#Out[11]
[3, 4, 5, 6, 7]
[7, 6, 5]
#in【12】
#通过id可以直接判断出分片是从新生成的一份数据还是使用的同一份数据
l=[1,2,3,4,5,6]
ll=l[:]
#如果两个id值一样,则表明分片产生的列表是使用同一地址的相同数据
#否则,则表明分片是新生成了一份数据
print(id(l))
print(id(ll))
#out[12]
2454745518216
2454745508872