第八讲

函数(一)

函数的简介

  • 函数的创建

  • 函数的调用

  • 函数的参数

  • 函数的返回值

print() 打印函数

函数的特点:

  1. 函数中可以用来保存一些可执行的代码,在你需要的时候可以对这些代码进行多次的调用
  2. 函数中保存的代码不会立即执行,需要调用函数的时候代码才会执行

语法:

语法
def 函数名([形参1,形参2,形参3....]):
    代码块
def fun():  # 自定义函数   fun是函数名(函数对象)
    print('这是我的第一个函数')


fun()  # 函数的调用
fun()  # 函数的调用
fun()  # 函数的调用

函数的参数

def fun(a, b):  #函数的参数相当于在函数里面定义了一个或多个变量但是并没有
#给他们赋值ab就是这个函数的形式上的参数(形参)
    print(a + b)

fun(1, 2)  # 调用函数:如果有形参就必须传递实参(实际的参数)

参数的传递方式

1.位置传参

def fun(a, b, c=5):  # c=5就是将c的默认值设为5但是如果在调用的时候
#重新赋值就会对默认的值进行覆盖
    print(a)
    print(b)
    print(c)
fun(1, 2, 3)  #将对应位置上的实参赋值给对应位置上的形参

结果:

E:\shihaoqing\python.exe F:/BaiduNetdiskDownload/参数的传递方式.py
1
2
3

Process finished with exit code 0

2.关键字传参

def fun(a, b, c=5):  # 给对应的形参赋值,关键字传参不需要对应位置
    print(a)
    print(b)
    print(c)
fun(a=1, c=3, b=2 )

结果:

E:\shihaoqing\python.exe F:/BaiduNetdiskDownload/参数的传递方式.py
1
2
3

Process finished with exit code 0

3.位置传参和关键字传参混合使用


def fun(a, b, c=5): 
    print(a)
    print(b)
    print(c)
fun(a=1, c=3, 2)# 位置传参必须放在关键字传参前

结果:

E:\shihaoqing\python.exe F:/BaiduNetdiskDownload/参数的传递方式.py
  File "F:/BaiduNetdiskDownload/参数的传递方式.py", line 21
    fun(a=1, c=3, 2)
                 ^
SyntaxError: positional argument follows keyword argument

Process finished with exit code 1

4.实参的类型

实参可有是字符串,列表,int等所有类型

5.不定长参数

  • 不定长参数: 不知道会接受几个实参,所以用不定长参数(形参)来接受实参

  • arges就是不定长参数(接收位置传参) 当arges和位置传参混合使用的时候,位置参数一定要放到*a的前面

  • 当*arges和关键字传参一起使用的时候,关键字传参要放到后面去

  • **arges也是不定长参数(接收关键字传参)

  • 当四种传参方式同时使用时的顺序: 位置参数, *args, 关键字参数, **kwargs

def fun(c, *args, b):
    print(*args)
    print(args)
    i = 0
    for i in args:
        i += i
    print(i)
fun(2, 3, 4, 5, b=1)
E:\shihaoqing\python.exe F:/BaiduNetdiskDownload/不定长参数.py
3 4 5
(3, 4, 5)  #args是一个元组
10

Process finished with exit code 0
def fun(a, **kwargs):
    print(a)
    print(kwargs)

fun(2, b=5)
E:\shihaoqing\python.exe F:/BaiduNetdiskDownload/不定长参数.py
2
{'b': 5}#kwarges是一个字典

Process finished with exit code 0
def fun1(*args, **kwargs):  # 万能函数
    pass

参数的拆包

可以理解成与不定长参数是相反的

def fun(a, b, c):
    print(a)
    print(b)
    print(c)


t = (1, 2, 3)#t='asd'也可以
fun(*t)

结果:

E:\shihaoqing\python.exe F:/BaiduNetdiskDownload/参数的拆包.py
1
2
3

Process finished with exit code 0

def fun(a, b, c):
    print(a)
    print(b)
    print(c)


t = {'a': 1, 'b': 2, 'c': 3}
fun(*t)
fun(**t)

结果:
E:\shihaoqing\python.exe F:/BaiduNetdiskDownload/参数的拆包.py
a
b
c
1
2
3

Process finished with exit code 0

作业:

def name():
    while True:
        name = input('请输入名字:')
        if 6 <= len(name) <= 20:
            break
        else:
            print('名字太长或太短')
            continue

    while True:
        tel = input('请输入电话:')
        if len(tel) == 11:
            if tel.isdigit():
                break
            else:
                print('手机号码只能为数字')
                continue
        else:
            print('请输入正确的手机号码')
            continue

    while True:
        gender = input('请输入性别')
        if gender == '男' or gender == '女':
            break
        else:
            print('请输入男或女')
            continue
    return name, tel, gender

def fibonacci(num):
    a, b = 1, 1
    list1 = []
    for i in range(num):
        if i == 0:
            list1.append(a)
        if i > 0:
            a, b = b, a + b
            list1.append(a)
    print(list1)

fibonacci(20)

def summation(num):
    r = 0
    for i in range(num + 1):
        r += i
    print(r)


summation(100)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值