python版本:3.6.1
练习18.名称,变量,代码,函数
本课学习的是如下所示的代码段,按照Shaw的意思来说,这是一个小脚本。
1 # this one is like your scripts with argv
2 def print_two(*args):
3 arg1, arg2 = args
4 print(f"arg1: {arg1}, arg2: {arg2}")
5
6 # ok, that *args is actually pointless, we can just do this
7 def print_two_again(arg1, arg2):
8 print(f"arg1: {arg1}, arg2: {arg2}")
9
10 # this just takes one argument
11 def print_one(arg1):
12 print(f"arg1: {arg1}")
13
14 # this one takes no arguments
15 def print_none():
16 print("I got nothin'.")
17
18
19 print_two("Zed","Shaw")
20 print_two_again("Zed","Shaw")
21 print_one("First!")
22 print_none()
在这个脚本中,我有几点比较在意:
1、如第2、3、4句中的,args、arg1、arg2。经过测试这单格式可以任意替换的,并没有实际意义,但有可能是通用词,便于理解。(但是没有发挥实际作用)
我将其替换成了如下所示的文字,能够正常运作。
1 def print_two(*pen):
2 word1, word2 = pen
3 print(f"'文字1': {word1}, '文字2': {word2}")
2、如第2-4句相较于第7-8句,多了一句来说明args对应的是什么,这里想要更简洁的代码,就可以采取第二部分的形式,不使用*args,直接使用arg1、arg2。
# 括号中出现*args。
def print_two(*args):
# 定义*args
arg1, arg2 = args
print(f"arg1: {arg1}, arg2: {arg2}")
# 括号中出现arg1、arg2。相比于上面的def代码,这一部分代码缩减了一行代码。
def print_two_again(arg1, arg2):
print(f"arg1: {arg1}, arg2: {arg2}")
另外,*args是一个特殊定义的代码,前面的星号不能删去,否则在用户端无法正常运作。我的理解是,args(替换成animals也是一样)是一个代码,一个代码的情况下无法去定义两个代码(arg1、arg2)。若要args去定义两个代码,就必须在前面加上星号。除非不用args,改用像第二部分的2个代码。
3、这一段代码作为小脚本,开始有了实用价值,可以进行一些小的运作。我编写了如下的一段代码:(加上了汉字引导说明,以及input功能,修改了个别代码名)
1 def print_two(*pen):
2 word1, word2 = pen
3 print(f"'文字1': {word1}, '文字2': {word2}")
4
5 def print_two_again(arg1, arg2):
6 print(f"arg1: {arg1}, arg2: {arg2}")
7
8 def print_one(arg1):
9 print(f"arg1: {arg1}")
10
11 def print_none():
12 print("I got nothin'.")
13
14
15 print("现在,请输入你的文字。记得每次输入后,按下回车。")
16 print_two(input("第一部分"), input("第二部分"))
17 print_two_again(input(),input())
18 print_one("First!")
19 print_none()
可以得到如下的运作结果。
PS C:\Users\江仞树\lpthw> python .\ex18-1.py
现在,请输入你的文字。记得每次输入后,按下回车。
第一部分dog
第二部分cat
'文字1': dog, '文字2': cat
shark
whale
arg1: shark, arg2: whale
arg1: First!
I got nothin'.
总结,第18课非常有意思,加上之前课程学习的内容,可以在这一课进行一些小脚本的运作,让我感到了不少的乐趣。