小甲鱼Python教程第17,18讲--python函数 笔记及习题答案

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.默认参数和关键字参数表面最大的区别是什么?

关键字参数就是在函数调用的时候,通过参数名制定需要复制的参数,这样就不怕因为搞不清参数的顺序而出错,默认参数是在参数定义的过程中,为形参附初始值,当调用函数时,不传递实参,则默认使用形参的初始值代替

你可能感兴趣的:(小甲鱼python教程)