众所周知,day 3要间隔两三天才会继续学(苦笑)
摸鱼一时爽,一直摸鱼一直爽
定义函数时遇到的小问题
有range和没有range的区别
定义的add函数作用是对输入的参数进行加法运算,比如输入add(1,2) 输出结果就是3(1+2),注意区分for val in args 和 for val in range(args)的区别!
前者是val 在args中取值,而后者是在从(0,args)这个区间内依次取整数!
模块管理函数
python中函数可以被覆盖,避免命名冲突的方法通过模块(module)分开,通过关键字import导入指定模块即可区分。比如
import module1 as m1
import module2 as m2
m1.foo()
m2.foo()
但是如果是直接from module1 import foo 则无法区分两函数。
如果导入的模块除了定义函数之外还有其他可执行代码,那么在导入模块时这些代码会自动运行一遍,如果一般情况下我们最好把这些代码放在某一条件中,例如
def foo():
pass
def bar():
pass
# __name__是Python中一个隐含的变量它代表了模块的名字
# 只有被Python解释器直接执行的模块的名字才是__main__
if __name__ == '__main__':
print('call foo()')
foo()
print('call bar()')
bar()
我在论坛上找到了一些解释得更加清晰的博客,链接https://blog.csdn.net/xmp1669217327/article/details/81382174
其实说到底,在写模块时我们应该这么写
def main():
//你想完成的功能
pass
def a():
//你想定义的其他函数
if __name__=='__main__':
main() //调用模块中的功能
变量的作用域
与C相同,python中变量也拥有其作用域,如果想要在函数中修改全局变量而不是创建一个同名的局部变量,需要在函数中用global声名其为全局变量。
def foo():
global a
a = 200
print(a) # 200
if __name__ == '__main__':
a = 100
foo()
print(a) # 200
当然了,如果你要修改上一级函数的局部变量,应该用nonlocal声名。
注意如果上一级函数中不存在该局部变量,则会报错