阿环的PYTHON之旅-DAY 3

众所周知,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声名。
注意如果上一级函数中不存在该局部变量,则会报错

发布了3 篇原创文章 · 获赞 0 · 访问量 41

猜你喜欢

转载自blog.csdn.net/Five_cycles/article/details/104306153