Python超快速入门基础知识——函数入门:匿名函数、递归函数、文件基本操作、os模块、json模块

本文介绍了Python的基础知识,包括函数的创建和调用、变量作用域、参数传递,详细讲解了匿名函数、递归函数的使用,并探讨了文件操作和os、json模块的应用,最后展示了如何将结果存储为Excel文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


函数入门知识导图

在这里插入图片描述

一、函数的创建和调用
  • 函数调用示意图
    在这里插入图片描述
    函数必须有输入(参数)和输出(返回值)
    在这里插入图片描述

定义函数

def get_max(num1, num2):
    result = num1 if num1 > num2 else num2
    return result

调用函数

max_num = get_max(30, 80)
print(max_num)
二、函数中变量的作用域

1.全局变量: 全局生效的变量。函数外面的变量。

name = 'admin'

def login():
    print(name)

login()

2.局部变量: 局部生效的变量。函数内部的变量。

def logout():
    age = 19
    print(age)

logout()

# print(age)

3.函数内部修改全局变量.

def hello():
    global money
    money += 1
    users.append('user1')
    print(money, users)

money = 100  # 不可变数据类型
users = []  # 可变数据类型
hello()
"""
1). money是全局变量
2). 如果要在函数中修改全局的变量,不能直接修改, 需要用global关键字声明修改的变量是全局变量。
3). 不可变数据类型修改全局变量一定要global声明, 可变数据类型不需要。
"""
三、函数的参数传递

参数检查:isinstance(var, int)判断变量var是否为int

def get_max(num1: int, num2: int) -> int:
    """
    求两数的最大值
    :param num1: 整型数1
    :param num2: 整型数2
    :return: 最大值
    """
    if isinstance(num1, int) and isinstance(num2, int):
        return num1 if num1 > num2 else num2
    else:
        return 0

result = get_max(20, 30)
print(result)
print(help(get_max)) # 查看函数中的注释
四、常见的四类形参

1.必选参数:必须要传递的参数

def get_max(num1: int, num2: int) -> int:
    return num1 if num1 > num2 else num2

result = get_max(20, 30)
print(result)

2.默认参数:可传可不传的参数

def pow(x, y=2):
    return x ** y

result = pow(3)  # x=3, y=2, result=9
print(result)
result = pow(2, 4)  # x=2,y=4, result=2**4=8
print(result)

3.可变参数: 参数的个数会变化,可以传0,1,2,3,…n

# args是元组
# args=arguments
def my_sum(*args):
    return sum(args)

result = my_sum(4, 5, 6)  # 15
print(result)

4.关键字参数:可以传递key和value

# kwargs存储在字典中
def enroll(name, age=18, **kwargs):
    print(f"""
        入学信息
    1. 姓名:{name}
    2. 年龄:{age}
    3. 其他:{kwargs}
    """)

enroll('张三', country='china', english='GRE', sports=['篮球', '羽毛球'])

from collections import namedtuple # 从某个模块中导入某个功能
五、匿名函数

匿名函数指一类无须定义标识符的函数或子程序。Python用lambda语法定义匿名函数,lambda函数能接收任何数量的参数但只能返回一个表达式的值。

# 求最大值函数
# def get_max(num1: int, num2: int) -> int:
#     return num1 if num1 > num2 else num2
get_max = lambda num1, num2: num1 if num1 > num2 else num2
print(get_max(10, 20))

# 指数函数
# def pow(x, y=2):
#     return x ** y
pow = lambda x, y=2: x ** y
print(pow(4))
print(pow(2, 3))

<排序>

# 需求: 将所有的偶数排前面,所有的奇数排后面。
nums = [0, 7, 0, 2]
nums.sort(key=lambda num: 0 if num % 2 == 0 else 1)
print(nums)
六、递归函数
  • 原理图
    在这里插入图片描述
# 需求: 求n的阶乘。 n!=n*(n-1)*(n-2)*......1

方法1: for循环

res = 1
n = 3  # 3!=3*2*1=1*2*3=6
for i in range(1,n+1):
    res = res * i # res=1*1*2*3
print(res)

方法2: 递归

def f(n):
    """计算阶乘"""
    if n == 1:
        return 1
    return n * f(n - 1)

print(f(5))

<递归函数实现斐波那契数列>

def fib(n):
    """斐波那契数列""" # 1, 1, 2, 3, 5, 8
    if n == 1 or n == 2:
        return 1
    return fib(n - 1) + fib(n - 2)

print(fib(5))
七、文件的基本操作

1.打开文件

mode:
    r: 只能读文件
    w: 只能写入(清空文件内容)
    a+: 读写(文件追加写入内容)

f = open('doc/hello.txt', mode='a+')

2.文件读写操作

f.write('java\n')

3.关闭文件

f.close()
八、with语句

在with语句中,打开文件执行完之后操作之后会自动关闭文件。

with open('doc/test.txt', 'w+') as f:
    f.write('hello world\n')  # 写入文件
    f.seek(0, 0)  # ****: 移动指针到文件最开始
    print("当前指针的位置:", f.tell())
    f.seek(0, 2)  # 移动指针到文件末尾
    print("当前指针的位置:", f.tell())
    print(f.read())  # 读取文件内容
九、os模块
import os
import platform

# 1. 获取操作系统类型
print(os.name)
# 2. 获取主机信息,windows系统使用platform模块, 如果是Linux系统使用os模块
"""
try: 可能出现报错的代码
excpt: 如果出现异常,执行的内容
finally:是否有异常,都会执行的内容
"""
try:
    uname = os.uname()
except Exception:
    uname = platform.uname()
finally:
    print(uname)

# 3.获取系统的环境变量
envs = os.environ
# os.environ.get('PASSWORD')
print(envs)

# 4. 目录名和文件名拼接
# os.path.dirname获取某个文件对应的目录名
# __file__当前文件
# join拼接, 将目录名和文件名拼接起来。
BASE_DIR = os.path.dirname(__file__)
setting_file = os.path.join(BASE_DIR, 'dev.conf')
print(setting_file)

十、json模块
import json # 导入json模块

# 1. 将python对象编码成json字符串
users = {'name': 'westos', "age": 18, 'city': '西安'}
json_str = json.dumps(users)
with open('doc/hello.json', 'w') as f:
    # ensure_ascii=False:中文可以成功存储
    # indent=4: 缩进为4个空格
    json.dump(users, f, ensure_ascii=False, indent=4)
    print("存储成功")
print(json_str, type(json_str))

# 2. 将json字符串解码成python对象
with open('doc/hello.json') as f:
    python_obj = json.load(f)
    print(python_obj, type(python_obj))
十一、存储为excel文件
import pandas # 导入pandas模块
# 存入字典
hosts = [
    {'host': '1.1.1.1', 'hostname': 'test1', 'idc': 'ali'},
    {'host': '1.1.1.2', 'hostname': 'test2', 'idc': 'ali'},
    {'host': '1.1.1.3', 'hostname': 'test3', 'idc': 'huawei'},
    {'host': '1.1.1.4', 'hostname': 'test4', 'idc': 'ali'}
] 
# 1. 转换数据类型
df = pandas.DataFrame(hosts)
# print(df)

# 2. 存储到excel文件中
df.to_excel('doc/hosts.xlsx')
print('success')

<结果>
在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值