day10总结(函数)

function

function1

  1. 什么是函数
    函数就是对实现某一特定功能的代码段的封装

  2. 函数的分类
    内置函数(系统函数):Python已经实现的函数,程序员直接用,例如:print()、input()、max()、len()、min()等。 - 相当于系统造好的机器
    自定义函数:程序员自己定义的函数,相当于自己造机器

  3. 函数的定义(声明) - 造机器
    1)语法:
    def 函数名(参数列表):
    函数体

2)说明:
def - 声明函数的关键字,固定写法
函数名 - 要求:标识符,不能是关键字
规范:见名知义(看到函数名大概知道函数的功能)、所有的字母都小写,多个单词用下划线隔开、不能和系统的函数名类名重名
() - 固定写法
参数列表 - 形参1,形参2,形参3,... --> 变量名1,变量名2,变量名3;这儿的参数叫形参,形参可以没有也可以有多个 - 形参的功能是将函数外面的数据传递到函数里面
: - 固定写法
函数体 - 和def保持一个缩进的代码段;
函数体分为函数说明文档和实现函数功能的代码段两个部分

3)初学者声明函数的步骤:
第一步:确定函数的功能
第二步:根据功能确定函数的名字
第三步:确定参数(就是确定需不需要参数,需要几个参数)看实现函数的功能需不需要从函数外面给函数传值,如果需要,需要几个?
第四步:实现函数的功能
第五步:确定函数的返回值

  1. 函数体在函数声明时不会执行,调用函数的时候才会执行(重要!)
  2. 函数调用 - 使用机器
    1)语法:
    函数名(参数列表)
    2)说明:
    函数名 - 函数名对应的函数必须是已经声明过的函数
    () - 固定写法
    参数列表 - 这儿的参数叫实参;实参是用来给形参赋值的值1,值2,值3

写一个计算两个数的和的函数

def yt_sum(num1, num2):
    """
    函数功能说明:求两个数的和
    :param num1:int,数字
    :param num2:int,数字
    :return:None
    """
    print(num1, num2)
    print(num1 + num2)


yt_sum(100, 200)


# 写一个函数,功能是求1*2*...*n
def yt_multiply(n):
    """
    求1*2*...*n
    """
    result = 1
    for num in range(1, n+1):
        result *= num
    print(result)


yt_multiply(5)
# 写一个函数功能是打印10个*


def print_star():
    print('*' * 10)


print_star()

function2

  1. 函数的调用过程(重要!!!)
    函数在声明的时候不执行函数体,调用函数的时候才会执行函数体
    函数的调用过程:
    1)先回到函数声明的位置
    2)用实参给形参赋值(传参) - 传参要保证每个参数都有值
    3)执行函数体
    4)执行完函数体再回到函数调用的位置,接着往后执行
def yt_sum(num1, num2):
    print(num1 + num2)


yt_sum(1, 2)
print('~')
yt_sum(100, 200)
  1. 函数的参数
    1)根据实参的写法将参数分为位置参数和关键字参数
    a.位置参数:调用函数的时候实参的位置和形参一一对应,然后保证每个形参都有值
    b.关键字参数:实参列表以'形参名1=值1,形参名2=值2...'的方式来调用函数,在这儿形参的顺序可以和声明的时候形参的顺序不同
    注意:位置参数和关键字参数可以混合使用,但是使用的时候一定要保证位置参数在关键字参数前面
def func1(a, b, c):
    print(a, b, c)


# 位置参数
func1(10, 20, 30)
# 关键字参数
func1(a=10, b=20, c=30)
func1(c=30, b=20, a=10)
# 位置参数和关键字参数混合
func1(5, c=25, b=15)

2)参数默认值
声明函数的时候,函数的形参可以设置默认值。
注意:a.如果设置默认值的时候,是一部分参数有默认值,一部分参数没有默认值,那么没有默认值的参数一定要写在有默认值的参数的前面
b.有默认值的参数调用的时候可以不用传参;没有默认值的参数,调用的时候必须传参
c.当我们传参的时候某个或者某几个有默认值的参数,直接给后面的参数传参的时候,后面的参数必须使用关键字参数

def func2(a=10, b=20, c=30):
print(a, b, c)

3)参数类型说明
a.给参数设置默认值,默认是什么类型,参数就是什么类型
b.以'参数名:类型名'的方式说明参数类型

def func3(nums: list, a: int, b=0):
    nums.append('abc')
    print(a+b, nums)


func3([], 10, 0)

# 练习:写一个函数,功能是统计一个列表中指定元素的个数(类似count()方法的功能)


def count1(nums: list, item):
    count = 0
    for num in nums:
        if num == item:
            count += 1
    print('%d出现的次数是%d' % (item, count))


nums1 = [1, 2, 4, 3, 6, 4, 3, 1, 1, 1, 1]
count1(nums1, 2)

4)不定长参数
a.声明函数的时候,在形参前加一个,可以将这个形参变为元祖,然后同时接收多个实参的值
b.声明函数的时候,在形参前加
,可将这个形参变成字典,然后可以同时接受多个关键字的值
注意:原则上一个函数参数中既可以有定长的,也可以有带一个
的不定长和带的不定长;如果同时存在带一个参数和带两个的参数,带一个的要放在带两个的前面

def func(*args, **kwargs):
    print(args, kwargs)



def func2(a, **num):
    print('不定长参数2:')
    print(a, num)


func2(10, name=10, age=18, tel=110)
# 写一个函数,功能是求多个数的和


def yt_sum1(*num):
    print(sum(num))


yt_sum1(1)
yt_sum1(1, 2)
yt_sum1(1, 2, 3, 5)


# 注意:一个函数中可以同时有不定长参数和定长参数,一般情况下不定长参数要放在后面;
#       如果出现定长参数放在不定长参数的后面,那么在不定长参数后面的定长参数调用的时候需要使用关键字参数传参
def func1(a, *nums, b = 'abc'):
    print(nums, a, b)


func1(1)  #  1
func1(1, 2)  #  (2,) 1
func1(1, 2, 3)  #  (2, 3)  1
func1(1, 2, 3, 4, b='hello')
# 练习:写一个求多个数和的函数,要求既可以用位置参数传参,又可以用关键字参数传参
def jx_sum(*nums1, **nums2):
    sum1 = sum(nums1)
    sum2 = 0
    for item in nums2:
        sum2 += nums2[item]
    print(sum1 + sum2)


jx_sum(1, 2, 3)
jx_sum(nam1=10, num2=20, num3=30)

function3

  1. 什么是返回值
    返回值的作用是将函数体中产生的数据传递到函数外面
    返回值就是函数调用表达式的值,就是return关键字后面的值
    注意:a.函数调用表达式 - 调用函数的语句;它的结果就是这个函数的返回值;通过函数表达式获取函数的返回值
  2. return关键字
    return只能出现在函数体中;当执行函数体的时候遇到return函数直接结束;并且会将return后面的值作为函数的返回值返回;如果在执行函数体的时候没有遇到return,返回值为None
  3. 函数的调用过程(完整版)记!!!!!
    1)先回到函数声明的位置
    2)用实参给形参赋值 - 传参(保证每个参数都有值)
    3)执行函数体
    4)执行完函数体要确定返回值(执行完函数体没有遇到return,函数体的返回值就是None;
    执行过程中遇到return函数的返回值就是return的值)
    5)回到函数调用的位置,接着往后执行。(此时函数调用表达式的值才是函数的返回值)
def func1(n):
    print(n)
    return n


func1(10)
print(func1(10))
  1. 什么时候函数需要有返回值
    给初学者的建议:只要实现函数的功能产生了新的数据,就可以把产生的数据用返回值返回
# 写一个函数,求两个数的和:
def yt_sum(n1, n2):
    sum1 = n1 + n2
    return sum1


# python中一个函数可以有多个返回值;return后给多个值,用逗号隔开
def func2():
    return 10, 20


x, y = func2()
print(x, y)  # x = 10, y = 20 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容