03_函数编程-上篇

本文介绍了Python中的函数编程概念,包括函数定义、参数类型(位置参数、默认值、动态传参)、实参与形参的区别,以及函数的返回值和Python内置函数的使用。
摘要由CSDN通过智能技术生成

目录

1.函数编程_上_概述

 2.函数的定义

3.函数的参数

3.1 概述

 3.2 实参和形参

3.3 参数的分类

3.3.1 实参的分类

3.3.2 形参的分类

3.4 动态传参

4.返回值

5.python的内置函数(一部分)


1.函数编程_上_概述

"""
函数的概念
函数的参数
函数的返回值
python内置函数

"""

 2.函数的定义

函数: 对某一个特定的功能或者代码块进行封装. 在需要使用该功能的时候直接调用即可

好处: 让程序更加简洁. 代码更加合理
定义:
def 函数的名字():
    被封装的功能或者代码块->函数体

调用:
函数的名字()

def buy_cai():  # 定义函数
    print("1. 打车")
    print("2. 去菜市场")
    print("3. 讨价还价")
    print("4. 回家")


buy_cai()

#结果:
1. 打车
2. 去菜市场
3. 讨价还价
4. 回家

3.函数的参数

3.1 概述

参数: 可以在函数调用的时候. 给函数传递一些信息
"""
参数: 可以在函数调用的时候. 给函数传递一些信息

分类:
    1. 形参, 在函数定义的时候. 需要准备一些变量来接收信息
        1. 位置参数, 按照位置一个一个的去声明变量
        2. 默认值参数,  在函数声明的时候给变量一个默认值, 如果实参不传递信息. 此时默认值生效, 否则就不生效
        3. 动态传参.
             1. *args,  表示接收所有的位置参数的动态传参
             2. **kwargs, 表示接收所有的关键字的动态传参

        顺序*: 位置 > *args > 默认值 > **kwargs

        上述参数可以随意搭配使用

    2. 实参, 实际在调用的时候传递的信息
        1. 位置参数. 按照位置进行传递参数
        2. 关键字参数. 按照参数的名字进行传递参数
        3. 混合参数.
            顺序: 位置参数放前面, 关键字参数放后面 -> 否则报错! 官方不让这么干
        实参在执行的时候. 必须要保障形参有数据



"""

 3.2 实参和形参

# 1.骂谁?  2.骂道什么程度?
def maren(ren, lvl):  # 形参
    print("1. 怒目而视", ren)
    print("2. 验证交涉", ren)
    if lvl > 99:
        print("3. 死不要脸")
    else:
        print("3. 你愁啥")
    print("4. 骂完手工")


maren("破键盘", 188)  # 在调用函数的时候. 才能知道到底骂谁, 骂道什么程度  -> 实参
maren("破鼠标", 10)

#结果:
1. 怒目而视 破键盘
2. 验证交涉 破键盘
3. 死不要脸
4. 骂完手工
1. 怒目而视 破鼠标
2. 验证交涉 破鼠标
3. 你愁啥
4. 骂完手工

Process finished with exit code 0

3.3 参数的分类

3.3.1 实参的分类

def chi(zhu, fu, tang, tian):
    print(zhu, fu, tang, tian)

#位置参数. 按照位置进行传递参数
chi("大米饭", "西红柿炒鸡蛋", "紫菜蛋花汤", "哈根达斯")

#关键字参数. 按照参数的名字进行传递参数
chi(zhu="小米饭", tang="胡辣汤", fu="韭菜炒大腰子", tian="老中街冰棍")

#位置参数放前面, 关键字参数放后面
chi("小米饭", "胡辣汤", tang="韭菜炒大腰子", tian="老中街冰棍")


#结果:
大米饭 西红柿炒鸡蛋 紫菜蛋花汤 哈根达斯
小米饭 韭菜炒大腰子 胡辣汤 老中街冰棍
小米饭 胡辣汤 韭菜炒大腰子 老中街冰棍

3.3.2 形参的分类

#位置参数, 按照位置一个一个的去声明变量
#默认值参数,  在函数声明的时候给变量一个默认值, 如果实参不传递信息. 此时默认值生效, 否则就不生效

def luru(name, age, gender="男"):
    print(name, age, gender)


luru("张三", 18)
luru("李四", 28)
luru("王二麻子", 38)
luru("吴老二", 14)
luru("赵敏", 12, "女")
luru("周芷若", 11, "女")

#结果:
张三 18 男
李四 28 男
王二麻子 38 男
吴老二 14 男
赵敏 12 女
周芷若 11 女

Process finished with exit code 0

3.4 动态传参

# * 表示位置参数的动态传参, *接收到的值会被统一放在一个元组里面
def chi(*food):  # * 表示位置参数的动态传参, *接收到的值会被统一放在一个元组里面
    print(food)


chi('大米饭', "烧茄子", '紫菜蛋花汤', "哈根达斯")
chi("大米饭")
chi("大米饭", "烧茄子")
chi("大米饭", "紫菜蛋花汤")
chi("大米饭", "紫菜蛋花汤", "紫菜蛋花汤")


#结果:
('大米饭', '烧茄子', '紫菜蛋花汤', '哈根达斯')
('大米饭',)
('大米饭', '烧茄子')
('大米饭', '紫菜蛋花汤')
('大米饭', '紫菜蛋花汤', '紫菜蛋花汤')

Process finished with exit code 0
# ** 表示接收关键字的动态传参, 接收到的所有参数都会被处理成字典
def chi(**food):  # ** 表示接收关键字的动态传参, 接收到的所有参数都会被处理成字典
    print(food)


chi(fu="木须柿子", zhu="小米饭")


#结果:
{'fu': '木须柿子', 'zhu': '小米饭'}

# 混合传参 顺序*: 位置 > *args > 默认值 > **kwargs

def func(a, b, *args, c="哈哈", **kwargs):
    print(a, b, c, args, kwargs)


func(1,2,3,4, c="呵呵", hello=456, hahalou =654)



#结果:1 2 呵呵 (3, 4) {'hello': 456, 'hahalou': 654}
def func(*args, **kwargs):  # 没有限制的接收任何参数
    print(args, kwargs)

func()  # (), {}
func(1) #  (1, ), {}
func(1,2,3,4,4, a=2)  # (1,2,3,4,4), {"a":2}
func(1,2,3,4, c=4, a=2)# (1,2,3,4), {"c":4, "a":2}

4.返回值

"""
    返回值: 函数执行之后. 会给调用方一个结果. 这个结果就是返回值

    关于return:
        函数只要执行到了return. 函数就会立即停止并返回内容. 函数内的return的后续的代码不会执行
        1. 如果函数内没有return , 此时外界收到的是None
        2. 如果写了return
            1. 只写了return, 后面不跟数据, 此时接收到的依然是None  -> 相当于break
            2. return 值 , 此时表示函数有一个返回值, 外界能够收到一个数据 -> 用的最多
            3. return 值1, 值2, 值3....., 此时函数有多个返回值, 外界收到的是元组, 并且, 该元组内存放所有的返回值
"""
def func(a, b):
    print(a + b)
    return a + b
#
#
ret = func(10, 20)
print(ret * 3)   

# 结果:30
       90

# 如果函数内没有return , 此时外界收到的是None

def func():
    pass
    # return None

ret = func()

print(ret)  #结果:None
   
return   # 会让程序停止.  后续代码不会继续执行. 有点儿像循环里面的break
def func():
    print(123)
    return   # 会让程序停止.  后续代码不会继续执行. 有点儿像循环里面的break
    print(456)

ret = func()
print(ret)

#结果:123
       None
return 值1, 值2, 值3....., 此时函数有多个返回值, 外界收到的是元组, 并且, 该元组内存放所有的返回值
def func():
    return 1, 2, 3, 4


ret = func()
print(ret)


#结果:(1, 2, 3, 4)

5.python的内置函数(一部分)

内置函数: 直接能拿来用的函数
# # bin, oct, hex(二进制,八进制,十六进制)
# # bin, oct, hex
a = 18  # 十进制
print(bin(a))  # 0b10010
print(oct(a))  # 0o22
print(hex(a))  # 0x12



# a = 0b10010
# print(int(a))  # 二进制转化成十进制 #18
# sum(总和), min(最小值), max(最大值), pow(次方)
a = 10
b = 3
print(pow(a, b))
print(a ** b)  # 次幂

#结果:1000
       1000
lst = [12,456,32,18,64,57]
print(max(lst))
print(min(lst))
print(sum(lst))

#结果:
456
12
639
# list(列表) slice(切割)
s = {1,2,3,}
lst = list("呵呵哒")  # 内部一定会有一个循环(for)
print(lst)

s = slice(1, 4, 2)  # [1:4:2]
print("呵呵呵呵呵呵呵呵呵"[s])


#结果:['呵', '呵', '哒']
       呵呵
# enumerate, all, any
print(all([1, "123", '豆沙包']))   # 当成and来看  t and t and t
print(any([0, "", '']))  # 当成or来看

# 结果:True
        False
lst = ["张无忌", "张翠山", "张三丰", "张大大"]

for index, item in enumerate(lst):
    print(index, item)

#结果:
0 张无忌
1 张翠山
2 张三丰
3 张大大

  • 23
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

激进的猴哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值