我对Python感兴趣,并开始阅读Think Python by Allen B. Downey
。我是一个完全的初学者,不认识我圈子中的任何人进行编程,因此我决定在这里问我的问题,无论它多么简单。
我目前在与函数有关的部分中,无法理解涉及串联的示例/练习:
def cat_twice(part1, part2):
cat = part1 + part2
print_twice(cat)
在书中,这被描述为在函数中存储局部变量。在同一本书的前几章中,所有练习都是在Python Shell IDLE中完成的。据我了解,为了在存储了某些内容之后调用函数,您可以执行以下操作:
cat_twice()
当我这样做时,我得到:
Traceback (most recent call last):
File "<pyshell#63>", line 1, in <module>
cat_twice()
TypeError: cat_twice() missing 2 required positional arguments: 'part1' and 'part2'.
我到底没有做错什么还是做错什么?为什么程序没有运行?
答案 0 :(得分:1)
您在这里所做的是,您的函数强制要求两个参数,即part1和part2。调用函数时,必须按以下方式调用:
cat_twice(1,2) # assuming are trying to add two numbers in your function
如果您尝试字符串连接,建议您在python中查找join()
函数。
如果您想要一个可变参数函数,该函数可以将part1或part2用作参数,或者将二者或都不作为参数,则可以在方法签名中分配某些默认值,例如
def cat_twice(part1=None, part2=None)
...
...
...
if __name__ == '__main__':
cat_twice(part1=<something>)
cat_twice(part2=<somethingElse>)
cat_twice(part2=<some>, part1=<someMore>)
cat_twice(1,2) # here 1 will be passed as part1 and 2 as part2
请记住,如果您默认为函数参数分配了None,则在执行加法运算之前进行None检查,否则您可能会进入TypeError
来添加不受支持的操作数类型。
我希望这会有所帮助。
答案 1 :(得分:0)
这里有一个简单的示例,我定义了一个函数cat_twice,它将打印传递给它的两个值。 然后我通过像cat_twice()simple :)那样调用来传递两个值。
def cat_twice(part1,part2):
print(part1+part2) #this is the code in the function that will execute
cat_twice(1,2) #this is known as calling function
答案 2 :(得分:0)
“ cat_twice”函数包含函数“ print_twice”。 确保python首先运行了此功能,以便“ cat_twice”在需要时可以到达“ print_twice”。
它可以包含在块的开头。 试试:
def print_twice(bruce):
print(bruce)
print(bruce)
"""Defines the print_twice function"""
def cat_twice(part1,part2):
cat=part1+part2
"""the print_twice function now feeds into line 9"""
print_twice(cat)
line1='bingtiddle'
line2='tiddlebang'
cat_twice(line1,line2)
我还是一个人学习python,我在Udemy上做了一些训练营课程。 认为Python对于实际学习来说是一本更好的书。 这是我有足够信心提出的第一个建议,因此我希望它能起作用。 到目前为止,我已经达到了第四章。 祝你好运