看到了一个16进制转换的小知识点,就验证了一下运行结果.
#!/usr/bin/env python # coding:utf-8 # 看到了16进制转换的问题。顺便验证一下。 a = 255 b = 1001 print(hex(a), hex(b)) c = 0xff d = 0x3e9 print(int(c),int(d))
继续往前走, 学习一下global关键字
#!/usr/bin/env python # coding:utf-8 name = "tom" # 全局作用域 def chg_name(): global name # 有关键字 name = "jerry" # 修改了全局的变量 age = 38 # 局部作用域 print('change_name', name,age) # 如果函数内部没有global关键字,只能读取全局变量,无法对全局变量重新赋值. # 但是对于可变类型,依然可对内部元素进行操作. names =['toma','abc','kaka'] def qiuxin(): names.append('meixi') print(names) qiuxin() def change_name(): # name = "Anna" # age = 18 # 局部作用域 print(name,age) # def change_name2(): # name = "Anna" # # age = 18 # 局部作用域 # global name # 关键字需要放在局部的最上面. # print(name,age) change_name() chg_name() print(name) ### 规则: 全局变量名全部大写, 局部变量小写
验证一下函数以及变量的作用域:
#!/usr/bin/env python # coding:utf-8 # 函数的嵌套 def huangwei(): name = "黄伟" print(name) def liuyang(): name = "刘洋" print(name) def nuli(): name = "沪上" print(name) print(name) nuli() liuyang() print(name) huangwei() ## 以上代码将按照行号 4 23 7 8 20 11 12 18 19 15 16 21 的顺序执行 ename = "tom" def wei(): ename = "U" def suo(): global ename # 这里实际上拿到的是 tom ename = 'SA' suo() print(ename) # 这里实际上是32行的U print(ename) wei() print(ename)
与global作为对比的,有另一个关键字 nonlocal
#!/usr/bin/env python # coding:utf-8 ename = "tom" def wei(): ename = "U" def suo(): nonlocal ename # 这回拿到的是上一级的 ename = 'SA' suo() print(ename) # 这里实际上是32行的U print(ename) wei() print(ename)
风湿理论: 函数即变量
来自: http://www.cnblogs.com/linhaifeng/articles/6113086.html#label1
#!/usr/bin/env python # coding:utf-8 ### 递归好比问路 # 递归效率不高, def calc(n): print(n) if int(n / 2) == 0: return n res = calc(int(n / 2)) return res calc(10)