函数一般就是做以下这些事情:
1. 它们为一些代码起名字,就像变量为字符串和数字起名字一样。
2. 它们像脚本获取 argv 一样获取参数(arguments)。
3. 通过 1 和 2 的操作,做一些“小脚本”或者“微命令”。
可以通过在 Python 中使用 def 来创建一个函数。
创建 4 个不同的函数,它们就像脚本一样运行,之后还会展示每一个之间是如何关联的。
ex18.py
代码
#this one is like your scripts with argv
def print_two(*args): #用 def(define)来创建一个函数
arg1, arg2 = args
print(f"arg1: {arg1}, arg2: {arg2}")
# ok, that *args is actually pointless, we can just do this
def print_two_again(arg1, arg2):
print(f"arg1: {arg1}, arg2: {arg2}")
#this just takes one argument
def print_one(arg1):
print(f"arg1: {arg1}")
#this one takes no arguments
def print_none():
print("I got nothin'.")
print_two("Zed","Shaw")
print_two_again("Zed","Shaw")
print_one("First!")
print_none()
'''-----------------------------------------------------------------------------'''
'''
*args 中的 * 是什么作用? 这是告诉 Python 取所有的参数给函数,然后把它们放在 args 里放成一列,
很像之前学的 argv ,只不过这个是为函数设置的。这种不常用,除非有特殊需要
'''
功能
print_two 这是从创建脚本中已经学到的最熟悉的东西:
- 首先,我们告诉 Python 我们想要用 def (即 define)来创建一个函数。
- 在 def 的同一行我们给了函数一个名字,本例中是 print_two ,但是你也可以起名叫“peanuts”
(花生),名字没关系,不过最好简短一些,并且能够说明这个函数的作用。 - 然后我们告诉它我们想要 *args ,它很像参数 args ,只不过是为函数设的,必须放在括号里面
才能工作。 - 然后我们以 : 结束这一行,另起一行开始缩进。
- 在 : 之后缩进四个空格的所有行都是关于 print_two 这个函数名的。我们第一个缩进的行就是用
来解包这个参数(argument),跟之前的脚本一样。 - 要表明它是如何工作的,我们把这些参数打印了出来,就像我们在脚本中所做的一样。
print_two 的问题是它不是创建一个函数最简单的方法。在 python 里面,我们可以跳过整个解包参数的过程,只用我们需要的 () 里面的名字即可,这也正是 print_two_again 所做的事情。
之后我们用一个参数创建了 print_one 这个函数。
最后我们创建了一个没有参数的函数 print_none 。
注意
这很重要。如果你现在不太明白,别急着灰心,我们会再做几个跟函数相关的练习来进一步学习。
现在当我说“函数”的时候,你就把它想象成一个“迷你脚本”,跟着做就行了。
运行结果
问题
函数名称有哪些要求?
跟变量名一样,任何不以数字开头的字母、数字、下划线组合都可以。
*args 中的 * 是什么作用?
这是告诉 Python 取所有的参数给函数,然后把它们放在 args 里放成一列,很像你之前学的 argv ,只不过这个是为函数设置的。这种不常用,除非有特殊需要。
这部分好无聊好烦人啊。
这就对了,这说明你已经开始一边输入代码一边思考它的作用了。如果想让它不这么无聊,按照我的要求一字不差地输入进去,然后再故意打乱它们,看看你能不能修复好。