课堂笔记08-函数

课堂笔记

1. 函数简介

函数也是⼀个对象
函数⽤来保存⼀些可执⾏的代码,并且可以在需要时,对这些语句进⾏多次 调⽤

 语法
 def 函数名([形参1,形参2,形参3....]): 
 	代码块

注意: 函数名必须符合标识符的规范(可以包含字⺟、数字、下划线但是不能以数字开 头)
print是函数对象 print()是调⽤函数


# 定义一个函数
# 函数中保存的代码不会立即执行,需要调用函数代码才会执行
def fn():
    print('hahah')
    print('heiheihei')
    print('hello')
print(fn)

# print print()
# fn()
# fn()
# fn()
# fn()

# fn是函数对象 fn()调用函数



# 定义一个函数 来求任意2个数的和
# 函数的参数
# 在定义函数的时候,可以在函数后面的()中定义数量不等的形参。多个形参之间使用,隔开
def s(a,b):
    # a = None
    # b = None
    # print(a+b)
    # print('a =',a)
    # print('b =',b)
    print(a,'+',b,'=',a+b)
s(10,20)

2. 函数的参数

2.1 形参和实参

形参(形式参数) 定义形参就相当于在函数内部声明了变量,但是并不是赋值 实参(实际参数)指定了形参,那么在调⽤函数时必须传递实参,实参将会赋值 给对应的形参,简单来说有⼏个形参就要有⼏个实参

def fn(a = 5,b =10,c=20):

    print('a =',a)
    print('b =',b)
    print('c =',c)

def fn2(a):

    print('a =',a)

a = 123
b = False
c = None
# b = 'python'

fn(a,b,c)



2.2 函数的传递⽅式

定义形参时,可以为形参指定默认值。指定了默认值以后,如果⽤户传递了参 数则默认值不会⽣效。如果⽤户没有传递,则默认值就会⽣效
位置参数:位置参数就是将对应位置的实参赋值给对应位置的形参
关键字参数 : 关键字参数可以不按照形参定义的顺序去传递,⽽根据参数名 进⾏传递
混合使⽤位置参数和关键字参数的时候必须将位置参数写到关键字参数前⾯ 去

# 定义形参时,可以为形参指定默认值
# 指定了默认值以后,如果用户传递了参数默认值不会生效
# 如果用户没有传递参数,默认值则生效
def fn(a = 5,b =10,c=20):

    print('a =',a)
    print('b =',b)
    print('c =',c)

# fn(1,2)
# fn(1,2,3)
# fn(b=1,c=2,a=3)
# 位置参数和关键字参数可以混合使用
# fn(2,c=50)
# fn(c=60,1) # SyntaxError: positional argument follows keyword argument
#
# import requests
# #
# # headers = {}
# #
# response = requests.get(headers=headers,'xxxxxx')


3. 不定⻓参数

定义函数时,可以在形参前⾯加⼀个*,这样这个形参可以获取到所有的实 参,它会将所有的实参保存到⼀个元组中 
带*号的形参只能有⼀个,可以和其他参数配合使⽤ 
*形参只能接受位置参数,不能接受关键字参数 
**形参可以接收其他的关键字参数,它会将这些参数统⼀保存到字典当中。字 典的key就是参数的名字,字典的value就是参数的值 
**形参只有⼀个,并且必须写在所有参数的后⾯ 

def s(*a):

    # 定义一个变量 保存结果
    result = 0
    # 遍历元组,将元组中的元素进行累加
    for r in a:
        result += r
    print(result)
s(12,560)

#不定长参数
def fn(*a):
    print('a =',a,type(a))
fn(1,2,3,4,5)

# 带*号的参数只能有一个  SyntaxError: invalid syntax
def fn2(a,b,*c):
    print('a =', a)
    print('b =', b)
    print('c =', c)
fn2(1,2,3,4,5)

def fn2(a,*b,c):
    print('a =', a)
    print('b =', b)
    print('c =', c)
fn2(1,2,3,4,c=5)

def fn2(*a,b,c):
    print('a =', a)
    print('b =', b)
    print('c =', c)
fn2(1,2,3,b=4,c=5)
# 不定长参数不一定都要写在后面,但是注意 带*的参数后面的所有参数,必须以关键字形式来传递



# **的形参可以接收其他的关键字参数 它会将这些参数统一保存到字典当中
# 字典的key就是参数的名字,字典的value就是参数的在值
# **形参只能有一个,并且必须写在所有参数后面
# *a 处理的是位置参数 **a 是处理的是关键字参数
# def fn3(**a):
#     print('a =', a)
#
# fn3(b=2,d=1,c=3)

4. 参数的解包

传递实参时,也可以在序列类型的参数前添加星号,这样它会⾃动的将序列 中元素依次作为参数传递 要求序列中的元素的个数必须和形参的个数⼀致

def fn(a,b,c):
    print('a =', a)
    print('b =', b)
    print('c =', c)
t=(20,30,40)
fn(*t)
# 传递实参时候,也可以在序列类型的参数前面添加*号,这样它会自动的将序列三种的元素依次作为参数传递

# 创建一个字典
# 可以通过**来对字典进行解包
d = {'a':1,'b':2,'c':3}

fn(**d)




# help()函数
# 通过help()函数来查询python中函数的用法

# help(print)
# print('abc','13')
# print('www','baidu','com',sep='.')
# 自定义函数

def fn(a:bool,b:int,c:str)->int:

    '''
    这个函数式一个文档字符串的实例
    参数
        a:作用 类型 默认值......
        b:作用 类型 默认值......
        c:作用 类型 默认值......


    '''

    return 100

help(fn)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值