1.定义函数:
def function(参数):
2.形参和实参(parameter和argument)
def function(name): 形参
funtion(‘小甲鱼’) 实参
3.函数文档
定义函数用字符串表示的解释性的话
def myfunction(name):
'这是什么狗屁函数' #函数文档
print(name)
利用myfunction._doc_可以查看文档字符串(双下横线)
4.关键字参数
def saysome(name,words):
print(name+'->'+words)
saysome(words='woaini',name='suwenbo')#关键字参数
5.默认参数
参数定义的过程中为形参赋初值
def saysome(name='suwenbo',words='woaini'):
print(name+'->'+words)
若调用 saysome('苍井空','haha ')
输出 苍井空->haha
6.收集参数
def test(*parameters):
print('参数的长度是:',len(parameters))
print('第二个参数是:',parameters[1])
test(1,'小甲鱼',12,55)
参数的长度是: 4
第二个参数是: 小甲鱼
习题及答案
0. 你有听说过DRY吗?
DRY是程序员们公认的指导原则:Don’t Repeat Yourself.
快快武装你的思维吧,拿起函数,不要再去重复拷贝一段代码了!
1. 都是重复一段代码,为什么我要使用函数(而不使用简单的拷贝黏贴)呢?
0) 可以降低代码量(调用函数只需要一行,而拷贝黏贴需要N倍代码)
1) 可以降低维护成本(函数只需修改def部分内容,而拷贝黏贴则需要每一处出现的地方都作修改)
2) 使序更容易阅读(没有人会希望看到一个程序重复一万行“I love FishC.com”)
3. 创建函数使用什么关键字,要注意什么?
使用“def”关键字,要注意函数名后边要加上小括号“()”,然后小括号后边是冒号“:”,然后缩进部分均属于函数体的内容,例如:
def MyFun():
# 我是函数体
# 我也是函数体
# 我们都属于函数MyFun().
# 噢,我不属于MyFun()函数的了
4.请问这个函数有多少个参数?
def MyFun((x, y), (a, b)):
return x * y - a * b
如果你回答两个,那么恭喜你错啦,答案是0,因为类似于这样的写法是错误的!
我们分析下,函数的参数需要的是变量,而这里你试图用“元祖”的形式来传递是不可行的。
我想你如果这么写,你应该是要表达这么个意思:
1. >>> def MyFun(x, y):
2. return x[0] * x[1] - y[0] * y[1]
3.
4. >>> MyFun((3, 4), (1, 2))
5. 10
5. 请问调用以下这个函数会打印什么内容?
1. def hello():
2. print('Hello World!')
3. return
4. print('Welcome To FishC.com!')
Hello World!
因为当Python执行到return语句的时候,Python认为函数到此结束,需要返回了(尽管没有任何返回值)。
6. 编写一个函数power()模拟内建函数pow(),即power(x, y)为计算并返回x的y次幂的值。
def power(x,y):
result=1
r=1
if(y>0):
for i in range(y):
result*=x
else:
if(y==0):
result=1
else:
for i in range(-y):
r*=x
result=1/r
return result
7. 编写一个函数,利用欧几里得算法(脑补链接)求最大公约数,例如gcd(x, y)返回值为参数x和参数y的最大公约数。
1. def gcd(x, y):
2. while y:
3. t = x % y
4. x = y
5. y = t
6.
7. return x
8.
9. print(gcd(4, 6))
8. 编写一个将十进制转换为二进制的函数,要求采用“除2取余”(脑补链接)的方式,结果与调用bin()一样返回字符串形式。
1. def Dec2Bin(dec):
2. temp = []
3. result = ”
4.
5. while dec:
6. quo = dec % 2
7. dec = dec // 2
8. temp.append(quo)
9.
10. while temp:
11. result += str(temp.pop())
12.
13. return result
14.
15. print(Dec2Bin(62))
9.请问一下那个是形参哪个是实参
def myfun(x):
return x**3
y=3
print(myfun(y))
x形参 y实参
10.函数文档和直接用#为函数写的注释你有什么不同?
给函数写文档上会为了让别人更好的理解函数,我们知道在函数开头写下字符串他是不会打印出来,这一部分字符串我们称为函数文档,和注释功能一样
11.使用关键字参数,可以有效避免什么问题出现呢?
关键自参数,是指在调用的时候,带上参数的名字制定具体调用哪个参数,从而可以不用按照参数的顺序调用函数
12.默认参数和关键字参数表面最大的区别是什么?
关键字参数就是在函数调用的时候,通过参数名制定需要复制的参数,这样就不怕因为搞不清参数的顺序而出错,默认参数是在参数定义的过程中,为形参附初始值,当调用函数时,不传递实参,则默认使用形参的初始值代替