1、初识函数

初识函数

本章内容:

    1、为什么要用函数
    2、创建和调用函数
    3、函数的参数
      收集参数
    4、函数的返回值
    5、函数文档

    6、本章小结

    7、作业

              8、扩展阅读


++++++++++++++++++++++++++

 

1、为什么要用函数

现在python届发生了一个大事件,len方法突然不能直接用了。。。

然后现在有一个需求,让你计算'hello world'的长度,你怎么计算?

这个需求对于现在的你其实不难,我们一起来写一下。

s1 = "hello world"
length = 0
for i in s1:
    length = length+1

print(length)

好了,功能实现了,非常完美。然后现在又有了一个需求,要计算另外一个字符串的长度,"hello eva".

于是,这个时候你的代码就变成了这样:

s1 = "hello world"
length = 0
for i in s1:
    length = length+1

print(length)

s2 = "hello eva"
length = 0
for i in s2:
    length = length+1

print(length)

这样确实可以实现len方法的效果,但是总感觉不是那么完美?为什么呢?

首先,之前只要我们执行len方法就可以直接拿到一个字符串的长度了,现在为了实现相同的功能我们把相同的代码写了好多遍 —— 代码冗余

其次,之前我们只写两句话读起来也很简单,一看就知道这两句代码是在计算长度,但是刚刚的代码却不那么容易读懂 —— 可读性差

print(len(s1))
print(len(s2))

我们就想啊,要是我们能像使用len一样使用我们这一大段“计算长度”的代码就好了。这种感觉有点像给这段代码起了一个名字,等我们用到的时候直接喊名字就能执行这段代码似的。要是能这样,是不是很完美啊?

 

2、创建和调用函数

初识函数定义与调用

复制代码
#使用def来创建,函数是以小写字母开头,类是大写字母开头,
def myFirstFunction():
    print("这是我的第一个函数!")
    print('我很激动')
    print('在这里感谢TBB,CCAV')

"""
注意:在函数后面一定要加上一对小括号,括号是比不可少的,可以放参数
"""

#调用函数
myFirstFunction()


"""
函数的调用和运行机制:当函数myFirstFunction()发生调用操作,Python会自动找到 def myFirstFunction()的定义过程。
依次执行函数包含的所有代码块部分
"""

#循环调用三次函数
for i in range(3):
    myFirstFunction()
复制代码

 

3、函数的参数

函数的参数

 参数

复制代码
#括号里放的就是函数的参数
#参数使得函数可以个性化的实现
def mySecondFunction(name):
    print(name +'帅锅')

mySecondFunction('小甲鱼')
mySecondFunction('小鱿鱼')
mySecondFunction('小丑鱼')

#可以传多个参数,用逗号隔开
#python可以支持非常多的参数,一般最多10几个够
def add(num1,num2):
    print(num1 + num2)

add(1,2)
复制代码

 

形参和实参

复制代码
#形式参数 parameter
#实际参数argument
#形参指的是函数创建和定义过程中小括号里的参数
#实参是指的函数被调用的过程中传递进来的参数
def myFunction(name):   #形参 name
    print(name)

myFunction('小甲鱼')   #实参 '小甲鱼'
复制代码

 

关键字参数和位置参数

复制代码
#普通的参数叫位置参数
#关键字参数就是在传入实参时指定形参的变量名
def saySomething(name,words):
    print(name + '->' + words)


saySomething('小甲鱼','让编程改变世界!')
saySomething('让编程改变世界!','小甲鱼')   #顺序和上面的不一样
saySomething(name='小甲鱼',words='让编程改变世界!')  #使用了关键字参数


'''
小甲鱼->让编程改变世界!
让编程改变世界!->小甲鱼
小甲鱼->让编程改变世界!
'''
复制代码

 

默认参数

复制代码
#默认参数是在定义的时候赋予了默认值的参数
def saySomethiing(name='小甲鱼',words='让编程改变世界!'):
    print(name + '->' + words)

#使用默认参数,在调用函数时可以不带参数
saySomethiing()


"""
默认参数与关键字参数的区别:
1、关键字参数在调用时,通过参数名指定要赋值的参数,这样就不怕搞不清楚参数的顺序而导致函数调用出错;
2、默认参数是在参数定义的过程中,为形参赋初值,当函数调用的时候,不传递实参,则默认使用形参的初始值代替
"""
复制代码

 

收集参数

复制代码
#收集参数
def test(*params):
    print('有%d个参数'%len(params))
    print('第二个参数是:',params[1])

test('F','i','s','h','C')
'''
有5个参数
第二个参数是: i
'''

test('小甲鱼',123,3.14)
'''
有3个参数
第二个参数是: 123
'''
复制代码

 

复制代码
#参数中带收集参数,其他的参数可以设置为默认参数
def test(*params,extra='8'):
    print('收集参数是:',params)
    print('位置参数是:',extra)

test(1,2,3,4,5,6,7,8,9)
'''
收集参数是: (1, 2, 3, 4, 5, 6, 7, 8, 9)
位置参数是: 8
'''
复制代码

 

打包与解包

复制代码
#打包与解包
def test(*params):   #打包
    print('有%d个参数'% len(params))
    print('第二个参数是:',params[1])


a = [1,2,3,4,5,6,7,8,9]
#test(a)    # 直接将列表名a作为实参将会出错
#IndexError: tuple index out of range

test(*a)  #实参前面加上星号(*)表示解包
'''
有9个参数
第二个参数是: 2

'''

#python还有一种收集方式,就是用(**),将参数们打包成字典
复制代码

 

 

4、函数的返回值

函数的返回值

#函数中使用关键字return,后面跟着指定的返回值
def add(num1,num2):
    return  num1 + num2

add(1,2)

 再谈返回值

复制代码
#返回多个值
def test():
    return [1,'小甲鱼',3.14]

print(test())   # [1, '小甲鱼', 3.14]

#可以利用元组的形式返回多个值
def test():
    return 1,'小甲鱼',3.14

print(test()) 
复制代码

 

5、函数文档

复制代码
def exchangRate(dollar):
    """
    美元  ->人民币
    :param dollar:
    :return:
    """
    return dollar * 6.5

a = exchangRate(10)
print(a)  #65

print(exchangRate.__doc__)   #使用__doc__来获取函数文档
'''
    美元  ->人民币
    :param dollar:
    :return:
'''

help(exchangRate)   #查看函数的帮助文档
'''
Help on function exchangRate in module __main__:

exchangRate(dollar)
    美元  ->人民币
    :param dollar:
    :return:
'''
复制代码

 

6、本章小结

面向过程编程的问题:代码冗余、可读性差、可扩展性差(不易修改)

定义函数的规则:

复制代码
复制代码
1.定义:def 关键词开头,空格之后接函数名称和圆括号()。
2.参数:圆括号用来接收参数。若传入多个参数,参数之间用逗号分割。
    参数可以定义多个,也可以不定义。
    参数有很多种,如果涉及到多种参数的定义,应始终遵循位置参数、*args、默认参数、**kwargs顺序定义。
    如上述定义过程中某参数类型缺省,其他参数依旧遵循上述排序 3.注释:函数的第一行语句应该添加注释。 4.函数体:函数内容以冒号起始,并且缩进。 5.返回值:return [表达式] 结束函数。不带表达式的return相当于返回 None def 函数名(参数1,参数2,*args,默认参数,**kwargs): """注释:函数功能和参数说明""" 函数体 …… return 返回值
复制代码
复制代码

调用函数的规则:

复制代码
复制代码
1.函数名()
    函数名后面+圆括号就是函数的调用。
2.参数:
    圆括号用来接收参数。
    若传入多个参数:
        应按先位置传值,再按关键字传值
        具体的传入顺序应按照函数定义的参数情况而定
3.返回值
    如果函数有返回值,还应该定义“变量”接收返回值
    如果返回值有多个,也可以用多个变量来接收,变量数应和返回值数目一致

无返回值的情况:
函数名()

有返回值的情况:
变量 = 函数名()

多个变量接收多返回值:
变量1,变量2,... = 函数名()
复制代码
复制代码

 

参数总结:

8、扩展阅读

python之路——初识函数

 

参考:https://www.cnblogs.com/Eva-J/articles/7125925.html#_labelTop

posted @ 2020-03-04 20:05  大熊子  阅读(238)  评论(0编辑  收藏  举报