《笨办法学 python3》系列练习计划——18.命名、变量、代码、函数

题目

从标题看,终于有点变成的感觉了不是么?接下来 Zed 将要教我们从最简单的方法来使用函数。

新知识

函数是一段可以重复运行的代码片段,使用函数可以提高一段代码的重复重复利用性,减少代码量,并且提高效率。
python 中定义函数有特定个格式,总是以 def 开头,后跟一个空格后是函数的名字,紧跟名字的是一对括号和冒号,如果这个函数有参数的话需要写在括号内,多个函数用逗号隔开。然后,在另起一行,和 def 起始位置相距 4 个空格 (缩进 4 个空格)的地方开始写函数的功能,取消 4 个空格则表示函数定义结束。

例如一个把任意数字加一后打印的函数看起来可能像这样:

# 定义函数
def plus_one(number):
    new_number = number + 1
    print(new_number)

# 使用函数
plus_one(5)

# 结果将是
6

Zed 在《笨2》中写到:

函数可以做三样事情:

  1. 它们给代码片段命名,就像“变量”给字符串和数字明明一样。
  2. 它们可以接受参数,就跟你的脚本接受 argv 一样。
  3. 通过使用 #1 和 #2,它们可以让你创建“微型脚本”或者“小命令”(好吧,这句话我琢磨了半天,终于想通了“通过使用第一条和第二条它们可以让你创建‘微型脚本’或者‘小命令’”)

加分练习

为自己写一个【函数注意事项】以供后续参考。注意事项如下:

  1. 函数定义是以 def 开始的么?
  2. 函数名是以字符和下划线 _ 组成的么?
  3. 函数名是不是紧跟着括号 (?
  4. 括号里是否包含参数?多个参数是否以逗号 ,隔开?
  5. 参数名是否有重复?(不能使用重复参数名)
  6. 紧跟着参数名的是不是括号和冒号 ):
  7. 紧跟着函数定义的代码是否使用了 4 个空格的缩进?
  8. 函数结束的位置是否取消了缩进?

当运行一个函数时,记得检查下面几点:

  1. 调用函数时是否使用了函数名?
  2. 函数名是否紧跟着 (
  3. 括号有无参数?多个参数是否以逗号隔开?
  4. 函数是否以 ) 结尾?

按照这两个表检查你的练习,直到你不需要检查为止。最后,将下面几句话阅读几遍:
“‘运行函数(run)’、‘调用函数(call)’、和‘使用函数(use)’是同一个意思”




我的答案

18.0 基础练习

# 这就和我们的脚本使用 argv 一样
def print_two(*args):
    arg1, arg2 = args
    print("arg1: %r, arg2: %r" %(arg1, arg2))

# 实际上参数 *args 是没什么意义的,我们实际可以这样写
def print_two_again(arg1, arg2):
    print("arg1: %r, arg2: %r" % (arg1, arg2))

# 这个是一个参数的
def print_one(arg1):
    print("arg1: %r" % arg1)

# 这个是没有参数的
def print_none():
    print("I got nothin'.")

# 下面是调用函数的演示,
# 不去使用函数的话,它们是不会打印任何东西出来的。
print_two("Zed","Shaw")
print_two_again("Zed","Shaw")
print_one("First!")
print_none()

这里写图片描述

跑一下没出错,接下来是程序肢解节目时间

Zed 以 print_two 为例子拆解了代码:

  1. 首先我们告诉 python 创建一个函数,我们使用的命令是 def,也就是“定义(define)”的意思。
  2. 紧接着 def 的是函数名。本例中的名字是print_two ,但名字可以随意取,即便是“peanuts”也没关系。但是最好能够体现函数的功能。
  3. 然后我们告诉函数我们需要 *args(asterisk args),这和脚本的 argv 非常相似,参数必须放在圆括号 () 中才能正常工作。
  4. 接着用冒号 : 结束本行,然后开始下一行缩进。
  5. 冒号以下,使用 4 个空格缩进的行都是属于 print_two 这个函数的内容。第一行的作用是将参数解包,这和脚本参数解包的原理差不多。
  6. 为了演示它的原理,我们把解包后的每个参数都打印出来,这和我们在之前脚本练习中所作的类似。

函数 print_two 的问题是:解包在这里其实是没必要的,有更直接简单的方式——在括号里直接把变量写出来。这就是 print_two_again

加分练习

本题的加分练习有点特殊,它本身就是答案,已经比较全面了




返回目录

《笨办法学 python3》系列练习计划——目录

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章