python – 当我在函数中传递一个完全不同的参数名称时会发生什么?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 当我在函数中传递一个完全不同的参数名称时会发生什么?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2511字,纯文字阅读大概需要4分钟。
内容图文
假设我有这个功能:
def print_a_line(line_count, f):
print line_count, f.readline()
我叫它:
current_line = 3
print_a_line(current_line, current_file)
现在发生了什么? line_count = 3还是line_count = current_line = 3?
另外,如果我传递不同的参数名称(比如我在这里使用current_line而不是line_count?),这是一件坏事吗?
解决方法:
What happens now? line_count = 3 or will it be line_count= current_line = 3?
line_count在print_a_line的调用中绑定到3.变量current_line不受调用的影响.
Also, is it a bad thing if I pass different argument names(like I did here with current_line instead of line_count?)
这根本不是坏事.您正在使用位置参数而不是命名参数.
在Python中,有两种参数:位置参数和命名参数.声明为上面的print_a_line函数的函数仅使用位置参数.只有命名参数的函数可能看起来像
def print_a_line_2(line_count=3, f=None):
if f is not None:
print line_count, f.readline()
具有位置和命名参数的函数可能看起来像
def print_a_line_2(line_count, f, append_newline=True):
if append_newline:
print line_count, f.readline()
else:
print line_count, f.readline(),
位置参数被称为位置的原因是只有你传递的参数的位置才重要.因此,您可以将您喜欢的任何两个表达式作为print_a_line的参数写入,并且首先传递的参数将绑定到line_count,并且在执行print_a_line期间,第二个传递的参数将绑定到f.
对于命名参数,情况并非如此,但语法不同.要传递命名参数,可以编写name = expression而不是简单地编写表达式.所以,要调用print_a_line_2,你可以写
print_a_line_2(line_count=3, f=current_file)
并且参数的名称来自等号之前的内容,而不是等号之后的内容.
有关命名和位置参数的更多信息,我建议您查看the Python tutorial.
编辑:每当你调用line_count(current_line,current_file)时会发生什么
Python解释器维护有关程序的若干信息,它维护的一些重要事项是符号表,它将名称(变量)绑定到它们的值,以及当前语句指针.每当当前语句指针到达该行时
print_a_line(current_line, current_file)
Python解释器在符号表中查找print_a_line,current_line和current_file.它发现print_a_line绑定到您在问题中定义的函数,current_line绑定到3,并且current_file绑定到文件对象(这是一个大的实现定义的数据结构,为了便于表示我’ ll调用F,大写字母F区别于小写字母f,我们将稍微相遇).由于print_a_line是一个函数,解释器使用参数3和F调用函数.为此,它保存当前的执行状态,将变量line_count绑定到符号表中的3和f到F,并将当前语句指针移动到print_a_line函数的第一行,即
print line_count, f.readline()
然后它执行内置的print语句的方式与执行原始函数调用的方式非常相似,查找符号表中的所有变量,并以与整个函数调用相同的方式调用f.readline()函数. to print_a_line.然后,当print_a_line函数返回时,Python解释器从符号表中删除line_count和f,并将语句指针移回到之前保存的位置.然后在调用print_a_line之后继续执行代码行.
内容总结
以上是互联网集市为您收集整理的python – 当我在函数中传递一个完全不同的参数名称时会发生什么?全部内容,希望文章能够帮你解决python – 当我在函数中传递一个完全不同的参数名称时会发生什么?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。