day15-python之变量和递归

2020-01-16 15:00:40 浏览数 (1)

1.局部变量与全局变量

代码语言:javascript复制
  1 #!/usr/bin/env python
  2 # -*- coding:utf-8 -*-
  3 
  4 # name='lhf'
  5 # def change_name():
  6 #     global name
  7 #     name='帅了一比'
  8 #     print('change_name',name)
  9 #
 10 #
 11 # change_name()
 12 # print(name)
 13 
 14 # name='lhf'
 15 #
 16 # def change_name():
 17 #     name1='帅了一比'
 18 #     name2='帅了一比'
 19 #     name3='帅了一比'
 20 #     print('change_name',name)
 21 #
 22 # globals
 23 
 24 # NAME = "杠娘"
 25 #
 26 # def yangjian():
 27 #     global NAME
 28 #     NAME = "小东北"
 29 #     print('我要搞', NAME)
 30 #
 31 # def qupengfei():
 32 #     NAME = "基"
 33 #     print('我要搞', NAME)
 34 #
 35 # yangjian()
 36 # qupengfei()
 37 
 38 # NAME = "产品经理"
 39 #
 40 # def yangjian():
 41 #     # NAME = "史正文"
 42 #     global NAME # 已经声明,NAME就是全局的的那个变量
 43 #     print('我要搞', NAME)
 44 #     NAME = "小东北"  # 修改 全局的变量
 45 #     print('我要搞', NAME)
 46 #
 47 # def qupengfei():
 48 #     NAME = "基"
 49 #     print('我要搞', NAME)
 50 
 51 # 如果函数的内容无global关键字,
 52 #   - 有声明局部变量
 53 # NAME = ["产品经理","廖波湿"]
 54 # def qupengfei():
 55 #     NAME = "自己"
 56 #     print('我要搞', NAME)
 57 # qupengfei()
 58 #   - 无声明局部变量
 59 # NAME = ["产品经理","廖波湿"]
 60 # def qupengfei():
 61 #     NAME.append('XXOO')
 62 #     print('我要搞', NAME)
 63 # qupengfei()
 64 
 65 # 如果函数的内容有global关键字
 66 #   - 有声明局部变量
 67 # NAME = ["产品经理","廖波湿"]
 68 # def qupengfei():
 69 #     global NAME
 70 #     NAME = "自己"
 71 #     print('我要搞', NAME)
 72 # qupengfei()
 73         # 错误示例
 74 # NAME = ["产品经理","廖波湿"]
 75 # def qupengfei():
 76 #     NAME = "自己"
 77 #     global NAME
 78 #     print('我要搞', NAME)
 79 # qupengfei()
 80 #   - 无声明局部变量
 81 # NAME = ["产品经理","廖波湿"]
 82 # def qupengfei():
 83 #     global NAME
 84 #     NAME = ["阿毛"]
 85 #     NAME.append('XXOO')
 86 #     print('我要搞', NAME)
 87 # qupengfei()
 88 
 89 ######## 全局变量变量名大写
 90 ######## 局部变量变量名小写
 91 
 92 # 优先读取局部变量,能读取全局变量,无法对全局变量重新赋值 NAME=“fff”,
 93 #     但是对于可变类型,可以对内部元素进行操作
 94 # 如果函数中有global关键字,变量本质上就是全局的那个变量,可读取可赋值 NAME=“fff”
 95 # qupengfei()
 96 # yangjian()
 97 
 98 # NAME = ["产品经理","廖波湿"]
 99 #
100 # def yangjian():
101 #     # NAME = "史正文"
102 #     global NAME # 已经声明,NAME就是全局的的那个变量
103 #     print('我要搞', NAME)
104 #     NAME = "小东北"  # 修改 全局的变量
105 #     print('我要搞', NAME)
106 #
107 # def qupengfei():
108 #     # NAME = "aS"
109 #     NAME.append('天扎龙')
110 #     print('我要搞', NAME)
111 #
112 # yangjian()
113 
114 # NAME = ["产品经理","廖波湿"]
115 # def qupengfei():
116 #     name = "自己"
117 #     global NAME
118 #     print('我要搞', NAME)
119 # qupengfei()
120 
121 # NAME = '海风'
122 #
123 # def huangwei():
124 #     name = "黄伟"
125 #     print(name)
126 #     def liuyang():
127 #         name = "刘洋"
128 #         print(name)
129 #         def nulige():
130 #             name = '沪指花'
131 #             print(name)
132 #         print(name)
133 #         nulige()
134 #     liuyang()
135 #     print(name)
136 #
137 # huangwei()  # 黄伟 刘洋 刘洋 沪指花 黄伟
138 
139 # name = "刚娘"
140 # 
141 # def weihou():
142 #     name = "陈卓"
143 #     def weiweihou():
144 #         nonlocal name   # nonlocal,指定上一级变量,如果没有就继续往上直到找到为止
145 #         name = "冷静"
146 # 
147 #     weiweihou()
148 #     print(name)
149 # 
150 # print(name)
151 # weihou()
152 # print(name)
153 # 刚娘
154 # 冷静
155 # 刚娘

2.前向引用

代码语言:javascript复制
 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 
 4 
 5 # def foo():
 6 #     print('from foo')
 7 #     bar()
 8 #
 9 # foo()
10 
11 # def bar():
12 #     print('from bar')
13 # def foo():
14 #     print('from foo')
15 #     bar()
16 #
17 # foo()
18 
19 
20 
21 # def foo():
22 #     print('from foo')
23 #     bar()
24 #
25 # def bar():
26 #     print('from bar')
27 # foo()
28 
29 # def foo():
30 #     print('from foo')
31 #     bar()
32 # 
33 # foo()
34 # 
35 # def bar():
36 #     print('from bar')

3.测试

代码语言:javascript复制
 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 name='海风'
 4 def huangwei():
 5     name = "黄伟"
 6     print(name)
 7     def liuyang():
 8         name = "刘洋"
 9         print(name)
10         def nulige():
11             name = '炉指花'
12             print(name)
13         print(name)
14         nulige()
15     liuyang()
16     print(name)
17 
18 print(name)
19 huangwei()
20 print(name)  # 海风 黄伟 刘洋 刘洋 炉指花 黄伟 海风
代码语言:javascript复制
 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 def calc(n):
 4     print(n)
 5     if int(n / 2) == 0: # 10/2  5/2  2/2
 6         return n
 7     res=calc(int(n / 2))
 8     return res
 9 
10 
11 calc(10)#   10 5 2 1

4.递归

代码语言:javascript复制
 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 # def calc(n):
 4 #     print(n)
 5 #     if int(n / 2) == 0:
 6 #         return n
 7 #     res=calc(int(n / 2))
 8 #     return res
 9 #
10 #
11 # res=calc(10)
12 # print(res)
13 
14 # while True:
15 #     print(10)
16 
17 # import time
18 #
19 # person_list=['alex','wupeiqi','linhaifeng','zsc']
20 # def ask_way(person_list):
21 #     print('-'*60)
22 #     if len(person_list) == 0:
23 #         return '根本没人知道'
24 #     person=person_list.pop(0)
25 #     if person == 'linhaifeng':
26 #         return '%s说:我知道,老男孩就在沙河汇德商厦,下地铁就是' %person
27 #
28 #     print('hi 美男[%s],敢问路在何方' % person)
29 #     print('%s回答道:我不知道,但念你慧眼识猪,你等着,我帮你问问%s...' % (person, person_list))
30 #     time.sleep(1)
31 #     res=ask_way(person_list)
32 #
33 #
34 #     print('%s问的结果是: %res' %(person,res))
35 #     return res
36 #
37 # res=ask_way(person_list)
38 # print(res)
39 # 我          来英                杨建         是征文
40 # res等沙河      res等沙河       res等 沙河      return ‘沙河’
41 #                 print          printres
42 
43 
44 import time
45 res=time.sleep(10)
46 print('----------->')

0 人点赞