您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:Python 函数那不为人知的一面

51自学网 2022-02-21 10:49:07
  python
这篇教程Python 函数那不为人知的一面写得很实用,希望能帮到您。

通常我们定义一个函数,然后调用该函数时,函数相关的代码才开始执行。可是很多人并不知道,当我们定义函数时,一些代码就开始执行了。今天就来说说函数这个不为人知的一面。

通常我们定义一个函数,然后调用该函数时,函数相关的代码才开始执行。可是很多人并不知道,当我们定义函数时,一些代码就开始执行了。今天就来说说函数这个不为人知的一面。

先看一段代码:

def do_something(opt: print('参数 opt'), arg=print('参数 arg')) -> print('函数的返回值'):     print("do something runing")  if __name__ == '__main__':     pass 

上面的代码我们定义来一个函数,但是并没有调用它,那么它会输出信息吗?

会的,参数里无论是类型提示部分,还是默认赋值部分,还是返回值的类型提示,里面的语句都会被执行,结果如下:

这个做法我自己是很少见的。把 print 函数换成打开文件、连接数据库之类的操作,也都会被执行。

不过通常情况下,参数都是不可变类型,如果传入可变类型,可能每次的函数调用,其结果都会被改变,例如:

def do_something(opt: print("参数 opt"), arg=[]) -> print("函数的返回值"):     print("do something runing")     print(f"{arg = }")     arg.append(0)  if __name__ == "__main__":     do_something(opt=1)     do_something(opt=1) 

运行结果如下:

可以发现,调用两次函数 do_something,虽然并没有传入 arg 参数,arg 的值已经发送了变化。如果不注意这点,可能会有 bug 发生。在 Pythcarm 中,会警告我们 arg 是可变对象:

如果要获取函数的类型提示、默认值,可以这样:

def do_something(opt: 1, arg=2) -> 3:     print("do something runing")     print(f"{arg = }")     arg.append(0)   if __name__ == "__main__":     print(f"{do_something.__annotations__ = }")     print(f"{do_something.__defaults__ = }")  #do_something.__annotations__ = {'opt': 1, 'return': 3} #do_something.__defaults__ = (2,) 

到此这篇关于Python 函数那不为人知的一面的文章就介绍到这了,更多相关Python 函数内容请搜索51zixue.net以前的文章或继续浏览下面的相关文章希望大家以后多多支持51zixue.net!


关于python中.xpath的使用问题
Python PyQt5干货满满小项目轻松实现高效抠图去背景
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。