Python 3 函数部分

Python的函数


9-1 Python调用函数

  • Python官方文档 内置函数

  • 求绝对值 abs()

    绝对值 absolute value

  • 比较大小 cmp()

    比较 compare

    • 小于返回 -1
    • 等于返回 0
    • 大于返回 1
  • 基础数据类型转换函数

    • int() 转换为整数
    • str() 转换为字符串
  • sum() 接受一个列表作为参数,将列表中元素求和

    求和 summation

    # 例题: 计算 1*1 + 2*2 + 3*3 + ... + 100*100
    L = []
    x = 1
    while x <= 100:
        L.append(x * x)
        x = x + 1
    print(sum(L))
    

9-2 Python定义函数

  • 定义流程 & 注意事项
    • 定义一个函数要使用 def 语句 ,依次写出 函数名括号() 、 括号中的 参数冒号

      定义 define

    • 缩进块中编写函数体,函数的返回值用 return 语句返回
    • return表示返回的意思,函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回
  • 示例一
# 以定义一个求绝对值的函数 my_abs 函数
def my_abs(x): # 注意冒号
    if x >= 0:
        return x
    else:
        return -x
  • 示例二
# 求列表list所有元素的和的函数:
def list_sum(L):
    result = 0
    for num in L:
        result = result + num
    return result
# 在最后return,我们把求和的结果result返回了,这样就可以在外部调用函数后获得result
L = [1, 3, 5, 7, 9, 11]
result = list_sum(L)  # 调用定义的sum_list函数并获得return返回的结果
print(result)
  • 示例三
# 定义一个square_of_sum()函数,它接收一个list,返回list中每个元素平方的和
def square_of_sum(L):
    sum = 0
    for x in L:
        sum = sum + x * x
    return sum
    # 用sum作为变量要注意不要与sum()函数混淆
print(square_of_sum([1, 2, 3, 4, 5]))
print(square_of_sum([-5, 0, 5, 15, 25]))

9-3 Python函数返回值

  • reurn 会返回 None,可将结果在函数中打印
  • return a,b return可以返回多个值,注意用逗号分割开
  • 返回多个值的类型实际上是tuple,可以用一个值存储这个tuple,并通过下标来单独获得结果中的单个值

9-4 Python递归函数

  • 示例:求阶乘
def factorial_(num):
    if num == 1:
        print('1')
    elif num < 0:
        print('输入错误')
    elif num > 0:
        return factorial = factorial_(num - 1) * num
  • 使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出
Traceback (most recent call last):
RecursionError: maximum recursion depth exceeded in comparison
# 比较中超出了最大递归深度

9-5 Python函数参数

  • isinstance(object, classinfo)函数
    • 参数
      • object – 实例对象
      • classinfo – 可以是直接或间接类名、基本类型或者由它们组成的元组
      • classinfo可以是int,float,bool,complex,str(字符串),list,dict(字典),set,tuple
      • classinfo 的字符串是 str 而不是 string,字典也是简写 dict
    • 返回值
      • 如果对象的类型与参数二的类型(classinfo)相同则返回 True,否则返回 False
    • 示例
      a = 2
      isinstance (a,int) # >>> True
      isinstance (a,str) # >>> False
      isinstance (a,(str,int,list))  # 是元组中的一个返回 True
    

9-6 Python函数使用默认参数

  • 语法
    • 在调用函数时,也可以给所有的参数传值,即便有默认值,它也会优先使用传递给它的新值
def 函数名(... ,形参名=默认值):
    代码块
  • 示例: int() 函数有两个参数,第二个参数是base进制,不规定时默认为十进制
int('123') # ==> 123
int('123', 8) # ==> 83
  • 函数的默认参数的作用是简化调用,你只需要把必须的参数传进去。但是在需要的时候,又可以传入额外的参数来覆盖默认参数值
  • 需要注意的是,由于函数的参数按从左到右的顺序匹配,所以默认参数只能定义在必需参数的后面,否则将会出现错误
SyntaxError: non-default argument follows default argument
# 非默认参数跟在默认参数之后
  • Pyhton 中,可以使用 “ 函数名.defaults查看函数的默认值参数的当前值,其返回值是一个元组
print(dis_str.__defaults__)

9-7 & 9-8 Python函数使用可变参数

  • *args 当传入的参数个数未知,且不需要知道参数名称
def func(*args):
    print('args length = {}, args = {}'.format(len(args), args))

func('a') # ==> args length = 1, args = ('a',)
func('a', 'b') # ==> args length = 2, args = ('a', 'b')
func('a', 'b', 'c') # ==> args length = 3, args = ('a', 'b', 'c')
  • args 当传入的参数个数未知,但需要知道参数的名称**时
    (类似于字典,即键值对)
def func_kwargs(farg, **kwargs):
    print("formal arg:", farg)
    for key in kwargs:
        print("keyword arg: %s: %s" % (key, kwargs[key]))
func_kwargs(1 ,id=1, name='youzan', city='hangzhou',age ='20')
formal arg: 1
keyword arg: id: 1
keyword arg: name: youzan
keyword arg: city: hangzhou
keyword arg: age: 20
  • 总结:
    • *args是非关键字参数,用于元组
    • **kw是关键字参数,用于字典

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值