试图理解功能以及如何通过练习来调用它们

时间:2018-10-21 07:22:13

标签: python python-3.x function

我对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'. 

我到底没有做错什么还是做错什么?为什么程序没有运行?

3 个答案:

答案 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对于实际学习来说是一本更好的书。 这是我有足够信心提出的第一个建议,因此我希望它能起作用。 到目前为止,我已经达到了第四章。 祝你好运