笨方法学python 习题18

习题18
python:3.9
函数可以做三样事情
1.它们给代码片段命名,就跟“变量”给字符串和数字命名一样。
2.它们可以接受参数,就跟你的脚本接受argv一样。
3.通过使用 #1 和 #2,它们可以让你创建“微型脚本”或者“小命令”。

你可以使用 def新建函数。我将让你创建四个不同的函数,它们工作起来和你的脚本一样。然后我会演示给你各个函数之间的关系。

# this one is like your scripts with argv
def print_two(*args):
    arg1,arg2 =args
    print("arg1:%r, arg2: %r"%(arg1,arg2))
    
#ok, taht *argv is actually pointless, we can just do this
def print_two_again(arg1,arg2):
    print ("arg1:%r,arg2:%r"%(arg1,arg2))
    
# this just takes one argument
def print_one(arg1):
    print("arg1:%r "%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()

输出结果为

PS C:\Users\78523\mybuff> python ex18.py
arg1:'Zed', arg2: 'Shaw'
arg1:'Zed',arg2:'Shaw'
arg1:'First!'
I got nothin'.

让我们把你一个函数 print_two肢解一下,这个函数和你写脚本的方式差不多,因此你看上去应该会觉着比较眼熟:
1.首先我们告诉Python 创建一个函数,我们使用到的命令是 def,也就是“定义(define)”的意思。
2.紧接着 def的是函数的名称。本例中它的名称是 “print_two”,但名字可以随便取,就叫“peanuts” 也没关系。但最好函数的名称能够体现出函数的功能来。
3.然后我们告诉函数我们需要 *args (asterisk args),这和脚本的 argv非常相似,参数必须放在圆括号 ()中才能正常工作。
4.接着我们用冒号 :结束本行,然后开始下一行缩进。
5.冒号以下,使用 4 个空格缩进的行都是属于 print_two这个函数的内容。其中第一行的作用是将参数解包,这和脚本参数解包的原理差不多。
6.为了演示它的工作原理,我们把解包后的每个参数都打印出来,这和我们在之前脚本练习中所作的类似。 函数 print_two的问题是:它并不是创建函数最简单的方法。在 Python 函数中我们可以跳过整个参数解包的过程,直接使用 ()里边的名称作为变量名。这就是 print_two_again实现的功能。
接下来的例子是 print_one,它向你演示了函数如何接受单个参数。
最后一个例子是 print_none,它向你演示了函数可以不接收任何参数
最后一个例子是 print_none,它向你演示了函数可以不接收任何参数。

加分习题为自己写一个函数注意事项以供后续参考。你可以写在一个索引卡片上随时阅读,直到你记住所有的要点为止。注意事项如下:
1.函数定义是以 def开始的吗? 答 (同上1)
2.函数名称是以字符和下划线_组成的吗? 答(同上2)
3.函数名称是不是紧跟着括号 (? 答 (同上3)
4.括号里是否包含参数?多个参数是否以逗号隔开?
答 (可以有参数,也可以无参数,多个参数以逗号隔开)

5.参数名称是否有重复?
答(不能使用重复的参数名)

6.紧跟着参数的是不是括号和冒号 ):?答(是的,然后同上5)
7.紧跟着函数定义的代码是否使用了 4 个空格的缩进(indent)?
答(是的,同上4,5)
8.函数结束的位置是否取消了缩进(“dedent”)? 答(是的)

当你运行(或者说“使用 use”或者“调用 call”)一个函数时,记得检查下面的要点:
1.调运函数时是否使用了函数的名称?
2.函数名称是否紧跟着 (?
3.括号后有无参数?多个参数是否以逗号隔开?
4.函数是否以 )结尾? 按照这两份检查表里的内容检查你的练习,直到你不需要检查表为止。
最后,将下面这句话阅读几遍:“‘运行函数(run)’、‘调用函数(call)’、和 ‘使用函数(use)’是同一个意思”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值