Python学习总结【连载】(七)

Python学习总结【连载】(七)

2018.06.21 Juttachen


概述

+ 25 函数

  • 函数概述
  • 函数的声明
  • 函数的调用

二十五、函数

1.函数概述

函数就是实现某一特定功能的代码块,在类中,函数又叫方法。
(也就是对某一个功能的封装)
为什么要用函数?
例子:
1.微信飞机大战
飞机的功能:左移、右移、上移、下移、发射子弹等
2.汽车左转右转

没有函数的时候:
问题:
1.一样的功能对应的代码,需要重复写很多次(代码冗余)
2.如果功能发生改变的时候,需要修改很多位置的代码
怎么解决上面的问题:
使用函数

函数的作用
1.让界面简洁(同样的功能对应的代码只写一遍)
2.如果功能发生改变,使用函数只需要修改一个地方的代码
3.让代码模块化

    # 汽车向左转
    print('看后视镜')
    print('踩油门')
    print('打转向灯')
    print('向左打方向盘')
    print('回正方向盘')
    # 汽车向右移
    print('看后视镜')
    print('踩油门')
    print('打转向灯')
    print('向右打方向盘')
    print('回正方向盘')

2.函数的声明(定义实现)

a.格式:
def 函数名(参数列表):
说明文字
函数体

解析:
def:是Python中声明函数的关键字
函数名:一种标识符,要求PEP8,见名知意(根据函数名大概知道函数的功能)
():固定格式,不能省略
参数列表(形参):
1.参数:参数的作用就是从外面往函数中传值的
2.参数列表:一个函数可以没有参数,也可以有一个或多个参数(实质是变量名,如果有多个参数,参数间用逗号隔开)
冒号:是固定格式
说明文字:对函数功能进行说明
函数体:就是实现函数功能的代码段(函数的核心)
*例子:Python的内置函数,如print(),input(),len(),max()等等
python中的列表内置函数,如果append(),insert()等等

b.对于初学者来说,声明函数的步骤
1.确定函数功能(确定函数是干什么的)
2.确定函数名(根据功能确定函数名)
3.确定参数(确定是否有参数,确定参数有几个,看实现这个功能需不需要从外面传值进去)
4.确定是否需要返回值(返回值:就是函数返回给调用者的数据[在Python中所有的函数都有返回值,默认是None])
5.实现函数的功能

注意:函数只有在调用的时候才会执行。

练习:写一个函数,打印'hello python'

    def say_hi(x):
        ''' 打印x中的内容 '''
        print(x)

    say_hi('hello python')
    #  或者
    def hello():
        ''' 打印 “hello python” '''
        print('hello python')
    hello()

3.函数的调用

a.普通函数的调用

调用格式:
函数名(参数列表(实参))
函数名:你申明的需要调用的函数(已经声明过的函数)

函数的调用过程:就是用实参给形参赋值,并且执行函数体获取返回值。

    print(hello()) 
    re = hello()

注意:
1.一个函数声明后,可以调用多次
2.Python中所有的函数调用表达式都有值,默认是None
3. 一定要保证每一个形参都有值
练习:写一个函数,去打印10的阶层

    def factorial_print(num):
        '''打印num的阶层'''
        x = 1
        product = 1
        while x <= num:
            product *= x
            x += 1 
        print(product)

    factorial_print(10)

    def factorial_10():
        '''打印10的阶层'''
        product = 1
        for x in range(1,11):
            product *= x
        print(product)

    factorial_10()

b.带参的函数

1)函数的声明

声明的时候的参数列表(形参):获取从外面传递给函数内部的值
形参在python中,实质就是变量(就是声明在函数内的变量)

2)函数的调用

实参:调用函数的时候给函数传的值

例子:写一个函数,打印两个数的和

    def my_sum(num1,num2):
        '''打印num1和num2的和'''
        print(num1+num2)

a)位置参数(用实参依次给形参赋值)

    my_sum(20,10) #执行这句代码:现将num1 = 10,num2 = 20,再执行my-sum的函数体
    # my_sum(30) #TypeError 注意:函数调用的时候一定要保证每个形参都有值

b)关键字参数

    my_sum(num2=10,num1=5)

练习:写一个函数,打印一个数的立方

    def cubic(x):
        '''打印一个数的立方'''
        print(x**3)
    cubic(10)
    cubic(x=10) 

3)参数的默认值

在Python中,函数的参数可以设置默认值。
如果参数设置了默认值,那么调用函数的时候,这个参数可以传参,也可以不参。

在声明的时候就可以直接给参数赋值,这时赋的值就是默认值,有默认值的函数可以不传参,但函数结果就与默认值相关。
注意:函数调用的要求是要保证每个参数有值
例子:写一个函数,问候某人(打印:XXX,how are you?)

    def say_hi(name='XXX'):
        '''问候'''
        print('%s,how are you'%(name))

例子:问好
注意:如果声明函数的时候,函数中有多个参数,有默认值的参数必须放到没有默认值的参数的后面。
因为函数参数位置传参的时候默认从前往后传,这样可以省参数

    def say_yeah(message,name = 'xxx'):
        '''问候'''
        print('%s,%s'%(name,message))

    say_yeah('aa')
    say_yeah('你吃了吗','李四')
    say_yeah(name='小花',message='我爱你')
    say_yeah(message='再见')
    say_yeah('你好')

4)参数个数不定情况

参数个数不确定的时候,就在参数列表中声明一个变量,前面加一个*;
这个时候变量就变成了元组。函数调用的时候,所有的实参都会作为元组的元素。
例子:写一个函数,求多个数的和

    def my_sum2(*nums):
        print(nums)

    my_sum2(10,2,30) #注意:变成元组,就要用元组的方式来做

    def my_sum3(*nums):# 注意:在一个文件里函数名是不能重复使用的。
        sum1 = 0
        for item in nums:
            sum1 += item
        print(sum1)

    my_sum3(10,2,30)
    my_sum3(1,2)
    my_sum3(1,2,3,4,5,6)

你可能感兴趣的:(Python学习总结【连载】(七))