博客
关于我
python 函数学习
阅读量:795 次
发布时间:2023-03-07

本文共 3365 字,大约阅读时间需要 11 分钟。

Python函数入门详解

1. 函数式编程与面向对象概述

函数是Python为代码最大程度重用和减少代码冗余而提供的基本结构。它的核心优势在于实现代码的高度复用性和可读性。Python支持两种主要编程范式:函数式编程和面向对象编程。

1.1 函数式编程

函数式编程的核心思想是将特定功能封装到函数中,便于后续重复调用。通过调用函数,可以避免代码的冗余,提升开发效率。

1.2 面向对象编程

面向对象编程通过对函数进行封装和分类,将实例和类的行为结合,实现了代码的更高层次管理,使开发更加高效和便捷。

2. 函数的定义与调用

2.1 函数定义语法

定义一个函数的语法格式为:

def 函数名(参数):     # 函数体    return 返回值

2.2 函数调用

调用函数时,需传入相应的参数。参数的传递方式分为位置参数、指定参数、默认参数和动态参数。

3. 函数的返回值

函数的返回值通过return关键字控制。若未使用return,函数默认返回None。注意,return语句执行后,后续代码不会执行。

3.1 示例

def re():    if 1 == 1:        return True    else:        return False# 调用返回结果print(re())  # 输出: True

4. 函数的参数类型

4.1 位置参数

参数按定义顺序传递。若函数定义为def ret(x):,则调用时需按顺序传入。

4.2 指定参数

指定参数允许在调用时直接指定对应值的字段名。如:

def ret(a, b, c):    print(a, "a")    print(b, "b")    print(c, "c")# 调用示例ret(b="bbb", a="aaa", c="ccc")

4.3 默认参数

若函数定义时给参数指定默认值,调用时可省略该参数。默认参数必须放在参数列表最后。

def ret(x="Hello Word"):    print(x)# 调用示例ret()  # 输出: Hello Wordret("Pythoner")  # 输出: Pythoner

4.4 动态参数

动态参数用于接收任意数量的参数或键值对。

4.4.1 元组参数

def ret(*args):    print(args, type(args))ret(11, 22, 33)  # 输出: (11, 22, 33) 

4.4.2 字典参数

def ret(**kwargs):    print(kwargs, type(kwargs))ret(k1=123, k2=456)  # 输出: {'k1': 123, 'k2': 456} 

4.4.3 混合参数

def ret(*args, **kwargs):    print(args, type(args))    print(kwargs, type(kwargs))ret(11, 222, 333, k1=111, k2=222)

4.5 参数解包

参数解包允许将多个变量自动提取到函数参数中。

def f(a, b, c, d):    print(a, b, c, d)args = (1, 2, 3, 4)f(*args)

5. 全局变量与局部变量

全局变量在函数外定义,局部变量在函数内定义。若要修改全局变量,需使用global关键字。

n1 = 1def num():    nonlocal n1    n1 += 1num()print(n1)  # 输出: 2

6. Lambda表达式

Lambda表达式是匿名函数,适用于简单的单行逻辑。

f = lambda x, y: x + yprint(f(1, 2))  # 输出: 3

7. 测试题

7.1 第一题

简述普通参数、指定参数、默认参数、动态参数的区别。

  • 普通参数:按定义顺序传递。
  • 指定参数:在调用时指定对应字段名。
  • 默认参数:定义时指定默认值,调用时可省略。
  • 动态参数:接收任意数量的参数或键值对。

7.2 第二题

计算传入字符串中数字、字母、空格及其他字符的个数。

def var(s):    num_digit = 0    num_alpha = 0    num_space = 0    num_other = 0    for char in s:        if char.isdigit():            num_digit += 1        elif char.isspace():            num_space += 1        elif char.isalpha():            num_alpha += 1        else:            num_other += 1    return (num_alpha, num_space, num_digit, num_other)result = var("21323 asd*%^*^% &*213asdasdasda sdasdasd")print(result)

7.3 第三题

判断传入的字符串、列表、元组长度是否大于5。

def num(x):    if len(x) > 5:        return True    else:        return Falseret1 = num(["asd","asdasd","asdasd","asdasd"])ret2 = num("asdasdasd")print(ret1, ret2)

7.4 第四题

检查传入对象的每个元素是否含有空内容。

def num(x):    for n in x:        n = str(n)        if n.isspace():            return False    return Trueret1 = num(" ")ret2 = num("asdasd")ret3 = num(["asd","312",123," "])print(ret1, ret2, ret3)

7.5 第五题

检查传入列表长度,若大于2,保留前两个元素。

def num(x):    if len(x) > 2:        return x[:2]    else:        return ""print(num(["11","22","33"]), num(["33"]))

7.6 第六题

提取传入列表或元组的奇数位元素。

def num(x):    result = []    for i in range(len(x)):        if i % 2 == 1:            result.append(x[i])    return resultprint(num([11,22,33,44,55,66]))

7.7 第七题

检查传入字典的每个value长度,若大于2,保留前两个。

def dictt(x):    for k in x:        if isinstance(x[k], str):            if len(x[k]) > 2:                x[k] = x[k][:2]        elif isinstance(x[k], list):            for i in x[k]:                s = str(i)                if len(s) > 2:                    idx = x[k].index(i)                    x[k].pop(idx)                    x[k].insert(idx, s[:2])    return xdic = {"k1": "v1v1", "k2": [1111,22,33,44]}print(dictt(dic))

转载地址:http://icofk.baihongyu.com/

你可能感兴趣的文章
python vue3实现大文件分段续传(断点续传)--带暂停和继续功能
查看>>
Python WebDriver如何打印整个页面源(html)
查看>>
Python WebSocket自动化测试:构建高效接口测试框架
查看>>
Python Web开发
查看>>
Redis 配置文件杂项。
查看>>
Python web自动化测试 —— 文件上传
查看>>
Python web自动化测试 —— 文件上传!
查看>>
Python Web自动化测试开发环境搭建(附安装包与虚拟机环境)
查看>>
python win32api键盘_Python win32api.keybd_event模拟键盘输入
查看>>
python Windows显示当前鼠标坐标
查看>>
python Workbook 表格宽度
查看>>
python write报错a byte-like object is required.not str
查看>>
PYTHON调用大模型实现图片生成
查看>>
python yaml.dump 缩进错误
查看>>
Python yield generator
查看>>
Python yield 使用浅析
查看>>
Python yield解析:深入理解生成器的魔力
查看>>
Python You are using pip version 10.0.1, however version 19.3.1 is available.
查看>>
python zipfile模块学习笔记(一)
查看>>
Python zip函数 详解(全)
查看>>