Python学习的第十六天
函数模块的使用方法
-
如果要使用其他文件(模块)中定义的函数
方法一:可以通过import导入模块,然后通过"模块名.函数名"的方式调用函数;
方法二:直接从模块中导入函数 —> “from 模块 import 函数” —> 直接通过函数名调用函数 -
import导入函数、模块时,可以使用as关键字(alias)进行别名
-
做工程化项目开发时,如果项目中的代码文件非常多,我们可以使用"包"(package)来管理"模块"(module),
再通过模块来管理函数,包其实就是一个文件夹,而模块就是一个Python文件,通过这种方式就可以很好的解决
大型项目团队开发中经常遇到的命名冲突的问题。 -
Python中的from、import、as关键字就是专门用来处理包和模块导入的操作的。
函数应用实例
生成随机验证码
import random
import string
def get_captcha_code(length: int = 4) -> str:
"""生成随机验证码
:param length: 验证码的长度
:return: 随机验证码字符串
"""
selected_chars = random.choices(string.digits + string.ascii_letters, k=length)
return ''.join(selected_chars)
for _ in range(10):
print(get_captcha_code())

判断是否为正整数
def is_prime(num: int) -> bool:
"""判断一个正整数是不是质数
:param num: 正整数
:return: 如果是质数返回True,否则返回False
"""
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
return num != 1
for n in range(2, 100):
if is_prime(n):
print(n, end=' ')

求最大公约数和最小公倍数
def gcd(x: int, y: int) -> int:
"""求最大公约数"""
while y % x != 0:
x, y = y % x, x
return x
def lcm(x: int, y: int) -> int:
"""求最小公倍数"""
return x * y // gcd(x, y)
print(gcd(27, 15))
print(lcm(27, 15))

获取文件的后缀名
# 定义函数时,写在*前面的参数称为位置参数,调用函数传递参数时,只需要对号入座
# 写在*后面的参数称为命名关键字参数,调用函数传递参数时,必须要写成"参数名=参数值"的形式
def get_suffix(filename, *, has_dot=False) -> str:
"""获取文件的后缀名
:param filename: 文件名
:param has_dot: 后缀名是否包含.
:return: 后缀名
"""
position = filename.rfind('.')
if position <= 0:
return ''
if not has_dot:
position = position + 1
return filename[position:]
import utils
print(utils.get_suffix(filename='hello.py'))
# 调用函数传递参数时,可以给参数带上名字,这种参数称为关键字参数
print(utils.get_suffix('hello.py', has_dot=True))
print(utils.get_suffix('hello.py.txt'))
print(utils.get_suffix('hello.py.txt', has_dot=True))
print(utils.get_suffix('hello'))
print(utils.get_suffix('hello.'))
print(utils.get_suffix('.hello'))

获取A班和B班考试成绩的描述性统计
import math
import random
def ptp(data):
"""求极差(全距)"""
return max(data) - min(data)
def average(data):
"""求均值"""
return sum(data) / len(data)
def variance(data):
"""求方差"""
x_bar = average(data)
temp = [(num - x_bar) ** 2 for num in data]
return sum(temp) / (len(temp) - 1)
def standard_deviation(data):
"""求标准差"""
return math.sqrt(variance(data))
def median(data):
"""找中位数"""
temp, size = sorted(data), len(data)
if size % 2 != 0:
return temp[size // 2]
else:
return average(temp[size // 2 - 1:size // 2 + 1])
from random import randrange
from utils.stats import average as avg, median, variance, standard_deviation as std
class_a_scores = [randrange(50, 101) for _ in range(50)]
class_b_scores = [randrange(50, 101) for _ in range(50)]
print('A班考试成绩描述性统计信息')
print(f'平均分: {avg(class_a_scores)}')
print(f'中位数: {median(class_a_scores)}')
print(f'方差: {variance(class_a_scores)}')
print(f'标准差: {std(class_a_scores)}')
print('B班考试成绩描述性统计信息')
print(f'平均分: {avg(class_b_scores)}')
print(f'中位数: {median(class_b_scores)}')
print(f'方差: {variance(class_b_scores)}')
print(f'标准差: {std(class_b_scores)}')


935

被折叠的 条评论
为什么被折叠?



