Python函数与模块笔记

Python 函数与模块笔记

目录

  1. 函数
    • 无参函数
    • 带参函数
    • 变量作用域
    • Lambda函数
    • 常用内置函数
  2. 模块与包
    • 模块的定义与导入
    • 包的使用
    • 常用模块(keyword、random、sys、time)

一、函数

1. 无参函数

  • 定义语法

def 函数名():

代码块

return [表达式] # return 则默认返回 None

  • 示例

def add():

op1 = 10

op2 = 20

rt = op1 + op2

print(op1, '+', op2, '=', rt)

return # 返回 None

add() # 输出: 10 + 20 = 30

  • 注意事项
    • 函数定义需在调用之前。
    • 函数体代码需正确缩进。
    • 函数名不能以数字开头。

2. 带参函数

  • 定义语法

def 函数名(形参列表):

代码块

return [表达式]

  • 参数传递方式
    • 位置参数:按顺序匹配形参。

def aa(x, y):

print(x, y)

aa(10, 6) # 输出: 10 6

    • 关键字参数:指定形参名,顺序无关。

aa(x=10, y=6) # 输出: 10 6

aa(y=6, x=10) # 输出: 10 6

  • 默认参数
    • 默认参数需在位置参数之后。

def aa(x, y=1): # 正确

print(x, y)

def aa(x=1, y): # 错误

pass

  • 综合示例(计算器)

def add(x, y):

return x + y

def subtract(x, y):

return x - y

# 用户输入与调用逻辑(部分代码)

choice = int(input("输入运算选择(1/2/3/4):"))

num1 = int(input("输入第一个数字: "))

num2 = int(input("输入第二个数字: "))

if choice == 1:

print(num1, "+", num2, "=", add(num1, num2))


3. 变量作用域

  • 全局变量:模块顶层定义,所有函数可访问。
  • 局部变量:函数内部定义,仅函数内有效。
  • 同名优先级:局部变量 > 全局变量。
  • 示例

name = 'Tim' # 全局变量

def f1():

age = 18 # 局部变量

print(age, name) # 输出: 18 Tim

def f2():

age = 19 # 局部变量

print(age, name) # 输出: 19 Tim

  • global 关键字:在函数内声明全局变量。

def f1():

global name

name = 'Tim' # 修改全局变量


4. Lambda 函数

  • 语法

lambda 参数列表: 表达式

  • 示例

sum1 = lambda x, y: x + y

print(sum1(3, 4)) # 输出: 7

  • 限制
    • 仅支持单行表达式,不能包含复杂逻辑(如循环、条件分支)。

5. 常用内置函数

函数 说明 示例
abs(x) 返回绝对值 abs(-10) → 10
bool(x) 转换为布尔值 bool(0) → False
float(x) 转换为浮点数 float('25') → 25.0
int(x) 转换为整数 int('100') → 100
range() 生成整数序列 list(range(0,5)) → [0,1,2,3,4]
sum() 求和 sum([1,2,3]) → 6
max() 返回最大值 max([6,2,12]) → 12
min() 返回最小值 min([6,2,12]) → 2

二、模块与包

1. 模块

  • 定义:包含函数/类的.py文件。
  • 导入方式
    • 导入整个模块:

import myModule

myModule.add(2, 3)

    • 导入指定函数:

from myModule import add, mul

add(2, 3)

    • 使用别名:

from myModule import add as add1


2.

  • 定义:包含__init__.py的目录,用于组织模块。
  • 导入子模块

import subproject.submodel

subproject.submodel.add(1, 3)

  • init.py 作用:初始化包(可包含公共代码)。

3. 常用模块

1 keyword 模块

  • 检查关键字:

import keyword

print(keyword.iskeyword("if")) # True

2 random 模块

  • 常用方法:

import random

print(random.randint(1, 100)) # 随机整数

print(random.choice(['a', 'b'])) # 随机选择元素

random.shuffle(list1) # 打乱列表顺序

3 sys 模块

  • 系统属性:

import sys

print(sys.version) # Python 版本

print(sys.path) # 模块搜索路径

4 time 模块

  • 时间处理:

import time

print(time.time()) # 时间戳(秒)

print(time.ctime()) # 字符串时间

t = time.localtime() # 时间元组

print(t.tm_year) # 年份


注意事项

  1. 函数定义顺序:必须先定义后调用。
  2. 参数匹配:实参个数需与形参一致。
  3. 全局变量慎用:避免意外修改。
  4. 模块导入优化:推荐在顶层导入。
相关推荐
mutianhao102437 分钟前
SQLAlchemy 2.x 异步查询方法比较
python·mysql·sqlalchemy
✿ ༺ ོIT技术༻40 分钟前
笔试强训:Day2
开发语言·c++·笔记·算法
Jackson@ML2 小时前
如何快速高效学习Python?
开发语言·python
西瓜本瓜@3 小时前
在Android中如何使用Protobuf上传协议
android·java·开发语言·git·学习·android-studio
言之。3 小时前
别学了,打会王者吧
java·python·mysql·容器·spark·php·html5
机智的人猿泰山3 小时前
java kafka
java·开发语言·kafka
Y1nhl4 小时前
搜广推校招面经八十一
开发语言·人工智能·pytorch·深度学习·机器学习·推荐算法·搜索算法
Algorithm15764 小时前
谈谈接口和抽象类有什么区别?
java·开发语言
YiSLWLL4 小时前
使用Tauri 2.3.1+Leptos 0.7.8开发桌面小程序汇总
python·rust·sqlite·matplotlib·visual studio code