python - 定义函数时“重载”变量
问题描述
在 Python 中,可以在函数定义中“重用”变量名。例如,可以如下定义函数 f(x,y) = x + y^2:
def f(x,y):
def square(x):
return x**2
return square(y)+x
这是有效的,因为 Python 知道 square(x) 定义中的 x 指的是 square() 的参数,而不是 f(x,y) 中的 x
但是在做更复杂的版本时会遇到问题吗?这被认为是不好的编程习惯吗?例如,以下会更好吗?
def f(x,y):
def square(z):
return z**2
return square(y)+x
解决方案
是的,确实有可能,实际上这种做法有一个名字 -包装。但是这个方法会占用更多的内存,因为你每次调用一个方法时都定义一个方法,所以这不会用在像这样简单的事情上。但是对于像 tensorflow 这样的模块,您必须为 TF 类的每个新实例定义自定义输入函数,这非常有用,因为您可以只返回一个函数。
推荐阅读
- node.js - 如何使用 Docker-Compose 将多个 MEAN 应用程序容器部署到 Azure
- c# - 如何从字符串列表类型的服务字段分配响应的字符串类型列表
- php - Email Validation Real-time message, email shows randomly and does stay
- php - How to append unique ID to a json array - OctoberCMS / Laravel
- java - 从 IntelliJ(社区版)连接到 Microsoft SQL Server
- python - Web Scraping:通过 Python 抓取多个网页
- python - 如何使用 python urllib 库打开包含在 url 地址中的变量的网页?
- html - 如何使 flexbox 项目的宽度和高度相等
- html - 定位文字
- python - 使用子程序时“未定义”