美文网首页
python函数理论

python函数理论

作者: 举颗凤梨 | 来源:发表于2019-08-01 17:24 被阅读0次

函数理论

1.什么是函数

  • 函数就是对实现特定功能的代码的封装

2.函数的分类

  • 系统函数(内置函数) - 系统已经声明好的函数(类似已经造好的机器),程序员会用就行.
    例如:print.input,max,min,type,len
  • 自定义函数 - 程序员自己声明的函数(自己造机器).

3.声明函数

1)语法:
def 函数名(形参列表):
函数说明文档
函数体

2)说明:

  • def - python中声明函数的关键字(固定写法)
  • 函数名 - 和变量名的要求一样
  • (): - 固定写法
  • 形参列表 - 以'变量名1,变量名2,...'的形式存在,每个变量就是形参.
    形参的个数根据情况可以没有也可以有多个.
    形参的作用是将函数外面的数据传递到函数里面.
  • 函数说明文档 - 用三个双引号引起来的字符串,作用是对函数的功能进行说明.
  • 函数体 - 和def保持一个缩进的一行或者多行语句.(实现函数功能的多条语句)

3)初学者声明函数的步骤
a.确定函数功能
b.确定函数功能确定函数名
c.确定函数的参数:看实现函数的功能需不需要从外面传值,需要几个?
d.实现函数的功能

注意(重要!!!):声明函数的时候不会执行函数体

4.函数的调用 (调用函数相当于使用机器)

1)语法
函数名(实参列表)

2)说明

  • 函数名 - 必须是已经声明过的函数的函数名
  • () - 固定写法
  • 实参列表 - 以'值1,值2,值3...'形式存在:这儿的每个值就叫实参,
    实参是用来给形参赋值的

注意:同一个函数可以调用多次

练习:要求写一个函数,实现两个数的和并且打印

def two_sum(num1=34, num2=3):
    """
    函数功能说明部分  : 求和
    :param num1: 参数num1的说明部分
    :param num2: 参数num2的说明部分
    :return: 返回值说明
    """
    print(num1 + num2)


two_sum(45,23)

函数的调用

1.函数调用过程

1)语法
函数名(实参列表)

2)调用函数的作用: 执行函数体;获取返回值

3)函数的调用过程:
第一步: 回到函数声明的位置
第二步: 传参(用实参给形参赋值)
第三步: 执行函数体
第四步: 执行完函数体就确定返回值
第五步: 回到函数调用的位置接着往后执行

练习:声明一个函数,实现求1+2+3+...n的和

def sum_n(n):
    sum1 = 0
    for x in range(1,n-1):
        sum1 += x
    return sum1

print(sum_n(10))

练习:声明一个函数,打印字符串中所有的字母字符

def alpha(str1):
   new_str = ''
   for char in str1:
       if 'A'<=char<='Z' or 'a'<=char<='z':
           new_str += char
   return new_str
print(alpha('dno373ds9'))

练习: 声明一个函数,在指定字符串中的数字字符后添加一个指定的字符

def add_num(str1,x):
    new_str = ''
    for char in str1:
        if '0'<=char<='9':
            new_str += char + x
        else:
            new_str += char
    return new_str

print(add_num('r2g3s3y3s','*'))

函数的参数

1.位置参数和关键字参数

根据调用函数的时候传参的方式将参数分为位置参数和关键字参数

  1. 位置参数:让实参和形参在位置上一一对应(第一个实参给第一个形参赋值,第二个实参给第二个形参赋值...)
  2. 关键字参数:以'形参名=值'的形式传参
    注意:位置参数和关键字参数可以同时使用,但是一起用的时候要求位置参数必须在关键字参数的前面
  3. 什么时候使用关键字参数:需要跳过前面某个或者某几个参数,直接给后面某个参数赋值的时候必须使用关键字参数。

2.参数默认值

  • 声明函数的时候,形参可以设置默认值。设置完默认值后调用函数的时候有默认值的参数可以不用传参。
  • 一个函数可以给所有的参数设置默认值,也可以给部分参数设置默认值;必须保证没有默认值参数必须放在有默认值参数的前面

3.参数类型说明

  1. 给参数赋默认值,默认值的类型就是参数的类型
  2. 以'参数名:类型名'的形式声明函数
def func1(a,b=200,c=300):
    print('a:{},b:{},c:{}'.format(a,b,c))
# 位置参数传参
func1(10,20,30)  # a:10,b:20,c:30
# 关键字参数传参
func1(b=20,c=30,a=10)  # a:10,b:20,c:30
# 位置参数和关键字参数可以同时使用,但位置参数必须在前面
func1(10,c=30,b=20)  # a:10,b:20,c:30
# 有默认值的可以不用传参
func1(10)  # a:10,b:200,c:300
func1(10,20)   # a:10,b:20,c:300
func1(10,c=30)   # a:10,b:200,c:30

4.不定长参数

  1. 在形参的前面加*,那么这个参数据可以同时接收多个实参,
    注意:

    1. 带*的参数会作为一个元祖,对应的多个实参是元祖中的元素;
    2. 带*的不定长参数,不能使用关键字参数传参
  2. 在形参前加,那么这个参数也可以同时接收多个实参(关键字参数,关键字自己随便命名);
    将带
    的参数作为一个字典,将关键字参数的关键字作为key实参作为value存储在字典中。

练习:写一个函数,计算多个数的和

def sum1(x,y,*num):  #这里的num是一个元祖
    print(x,y,num)   # 12 2 (345, 6, 3, 2)
    print(sum(num))

sum1(12,2,345,6,3,2)   #带*的不定长参数,不能使用关键字参数传参


def sum2(**nums):  # 这里的nums是一个字典
    print(nums)   # {'b': 2, 'c': 345, 'd': 6, 'e': 3, 'f': 2}


sum2(b=2,c=345,d=6,e=3,f=2)   # 带**的不定长参数,只能使用关键字参数传参

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

func2(2,3)   # (2, 3) {}
func2(a=1,b=3)  # () {'a': 1, 'b': 3}
func2(2,3,a=3,b=4)  # (2, 3) {'a': 3, 'b': 4}

补充:*的用法

1 *用在序列中用来解包(粉碎容器,只保留元素)
2 **只能用于解包字典,但是单独使用不行,因为键值对无法独立存在
3 通常与自定义函数结合使用,将某序列解包传参给自定义函数

list1 = [1,2,3,4,5,6,7]
print(*list1)    # 1 2 3 4 5 6 7
print(*'lsdfoi')  # l s d f o i
print(*{1,2,3,5,7})  # 1 2 3 5 7
print(*{'a':1,'b':2})  # a b

练习:声明一个函数求多个数的差

def differ(*nums):
    if nums:
        print(nums[0]-sum(nums[1:]))
    else:
        print(0)

differ(12, 23, 34, 45, 67)
differ(12, 23, 34, 45, 67)  # -157
differ(*[12, 23, 34, 45, 67])  # -157

函数的返回值

1.什么是返回值

  • 返回值就是return关键字后表达式的值(怎么确定函数的返回值)
  • 返回值就是函数调用表达式的值(怎么获取函数的返回值)
    (python中所有的函数都有返回值,默认为None)
  1. 什么是return
    return是函数体中的关键字(只能在函数中使用),作用有两个:结束函数/确定函数返回值
    a. 结束函数:执行函数体的时候只要遇到return,函数直接结束
    b. 确定函数返回值: return 返回值(可以是具体的数据,声明过的变量,运算表达式)

2)什么是函数调用表达式
函数调用语句就是函数调用表达式。例如:func1(10) max([1,2,3,4,5,6]),
每个调用函数的语句都有结果,这个结果就是调用这个函数得到的返回值

2.怎么使用返回值

想要用函数的返回值,就使用函数调用表达式的值.
普通数据能做的事情,函数调用表达式都可以做

3.什么时候需要返回值

初学者: 看实现函数的功能会不会产生新的数据,有就返回
return 返回值1,返回值2,...

def sum1(num1,num2):
    return num1+num2    # return 可以保存
a=sum1(10,20)
print(a)

相关文章

网友评论

      本文标题:python函数理论

      本文链接:https://www.haomeiwen.com/subject/asecdctx.html