Python数学建模-2.3函数(下)

news2024/9/27 19:26:36


 2.3.2模块的导入与使用

模块在Python中是一个包含Python定义和语句的文件,通常用来组织代码,使得代码更易于管理和复用。下面,我将详细讲解Python函数中模块的使用知识。

1. 模块的导入

在Python中,你可以使用import语句来导入一个模块。导入模块后,你就可以在当前的Python脚本或函数中使用该模块提供的函数、类或变量。

导入整个模块
import math  
  
def calculate_area(radius):  
    return math.pi * radius * radius

在这个例子中,我们导入了math模块,并在calculate_area函数中使用了math.pi

导入模块中的特定部分

如果你只需要模块中的某些函数或变量,可以使用from ... import ...语句来导入它们。

from math import pi, sqrt  
  
def circle_perimeter(radius):  
    return 2 * pi * radius  
  
def calculate_hypotenuse(a, b):  
    return sqrt(a ** 2 + b ** 2)

在这个例子中,我们只导入了math模块中的pisqrt,然后在两个函数中分别使用了它们。

导入模块并为其指定别名

当模块名太长或者可能与你的代码中的其他部分冲突时,可以为模块指定一个别名。

import numpy as np  
  
def compute_average(values):  
    return np.mean(values)

在这个例子中,我们导入了numpy模块,并为其指定了别名np,然后在compute_average函数中使用了np.mean

2. 模块的作用域

导入的模块在整个Python脚本中都是可用的,不仅仅是在导入它们的函数中。一旦模块被导入,它的内容就可以在脚本的任何地方被访问。

3. 在函数中导入模块的利弊

虽然在函数内部导入模块是技术上可行的,但通常不建议这样做。主要原因有:

  • 可读性下降:读者需要查看函数的内部才能知道它依赖哪些模块。
  • 性能问题:如果函数被频繁调用,每次调用都会导入模块,这会导致不必要的性能开销。
  • 维护困难:如果多个函数在不同的地方导入相同的模块,并且使用了不同的导入方式或别名,这会使代码维护变得困难。

4. 处理导入错误

当导入模块时,可能会发生错误,比如模块不存在或者路径不正确。为了处理这些错误,你可以使用try...except语句来捕获ImportError

try:  
    import some_module  
except ImportError:  
    print("无法导入some_module模块,请确保它已安装且路径正确。")  
    # 可以选择退出程序或者提供替代方案

5. 模块的安装和查找

Python模块可以从Python标准库中获得,也可以通过第三方库(如pip)进行安装。当你尝试导入一个模块时,Python解释器会在特定的路径中查找该模块。这些路径包括Python的安装目录、当前脚本所在的目录以及环境变量中指定的目录等。

在Pycharm中安装模块,详情参照我前面的一篇文章:https://blog.csdn.net/2202_75971130/article/details/134997662

总结

在Python函数中,模块的使用是非常常见的。通过导入模块,你可以利用其他开发者编写的代码,从而加快开发速度并提高代码质量。但是,在导入模块时,你应该注意导入的位置、方式以及错误处理,以确保代码的清晰性、可读性和健壮性。

2.3.3Python常用内置函数用法

Python 提供了许多内置函数,这些函数可以在不需要导入任何模块的情况下直接使用。这些函数涵盖了从基本的数据类型转换到复杂的迭代操作等各种功能。下面是一些常用的 Python 内置函数及其用法:

1. 数据类型转换

  • int(x): 将 x 转换为整数。
  • float(x): 将 x 转换为浮点数。
  • str(x): 将 x 转换为字符串。
  • list(x): 将 x 转换为列表。
  • tuple(x): 将 x 转换为元组。
  • dict(x): 将 x 转换为字典。
  • set(x): 将 x 转换为集合。
  • complex(real, imag): 创建一个复数。

2. 输入输出

  • input(prompt): 获取用户输入。
  • print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False): 打印输出。

3. 数学运算

  • abs(x): 返回 x 的绝对值。
  • divmod(a, b): 返回 a 除以 b 的商和余数。
  • max(x, y, ...): 返回给定参数中的最大值。
  • min(x, y, ...): 返回给定参数中的最小值。
  • pow(x, y): 返回 x 的 y 次方。
  • round(x, n): 返回 x 四舍五入到小数点后 n 位的结果。
  • sum(iterable): 返回可迭代对象中所有元素的和。

4. 类型检查

  • isinstance(object, classinfo): 检查对象是否是给定类或其子类的实例。
  • type(object): 返回对象的类型。

5. 迭代和序列处理

  • all(iterable): 如果可迭代对象中的所有元素都为真,则返回 True。
  • any(iterable): 如果可迭代对象中有任何元素为真,则返回 True。
  • len(s): 返回对象(如列表、元组、字符串等)的长度。
  • range(start, stop[, step]): 生成一个整数序列。
  • sorted(iterable, key=None, reverse=False): 对可迭代对象进行排序,返回排序后的列表。
  • enumerate(iterable, start=0): 返回一个枚举对象,将可迭代对象的元素和索引配对。
  • zip(iter1 [,iter2 [...]]): 将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象。

6. 其他常用函数

  • id(object): 返回对象的唯一标识符。
  • hex(x): 将整数转换为十六进制字符串。
  • oct(x): 将整数转换为八进制字符串。
  • bin(x): 将整数转换为二进制字符串。
  • chr(i): 返回表示 Unicode 字符的字符串,其中 i 是字符的 Unicode 编号。
  • ord(c): 返回表示 Unicode 字符的整数。
  • locals(): 返回当前局部符号表。
  • globals(): 返回当前全局符号表。
  • eval(expression): 执行一个 Python 表达式,并返回表达式的值。
  • exec(object[, globals[, locals]]): 动态执行 Python 代码。
  • hash(object): 返回对象的哈希值。
  • slice(start, stop[, step]): 返回一个表示由 range(start, stop, step) 指定索引集的 slice 对象。
  • vars([object]): 返回对象的 dict 属性。如果没有给定参数,则返回当前局部符号表。

7.用法举例说明

1. print() - 输出信息
print("Hello, World!")  # 输出:Hello, World!  
print("Hello", "Python")  # 输出:Hello Python  
print("Sum:", 1 + 2)  # 输出:Sum: 3
 2. input() - 获取用户输入
user_input = input("Please enter your name: ")  
print("Hello, " + user_input + "!")
3. type() - 返回对象的类型
num = 123  
print(type(num))  # 输出:<class 'int'>  
  
str_val = "hello"  
print(type(str_val))  # 输出:<class 'str'>
 4. len() - 返回对象长度
lst = [1, 2, 3, 4, 5]  
print(len(lst))  # 输出:5  
  
str_val = "hello"  
print(len(str_val))  # 输出:5
 5. range() - 生成一个整数序列
for i in range(5):  
    print(i)  # 输出:0 1 2 3 4  
  
for i in range(1, 6):  
    print(i)  # 输出:1 2 3 4 5  
  
for i in range(0, 10, 2):  
    print(i)  # 输出:0 2 4 6 8
 6. open() - 打开文件
with open('file.txt', 'r') as f:  
    content = f.read()  
    print(content)
 7. sum() - 返回序列中所有元素的和
numbers = [1, 2, 3, 4, 5]  
total = sum(numbers)  
print(total)  # 输出:15
 8. min() 和 max() - 返回序列中的最小值和最大值
numbers = [1, 2, 3, 4, 5]  
min_val = min(numbers)  
max_val = max(numbers)  
print(min_val)  # 输出:1  
print(max_val)  # 输出:5
 9. sorted() - 对序列进行排序
numbers = [5, 1, 9, 3, 7]  
sorted_numbers = sorted(numbers)  
print(sorted_numbers)  # 输出:[1, 3, 5, 7, 9]
 10. zip() - 将多个序列中的元素打包成一个个元组
names = ['Alice', 'Bob', 'Charlie']  
ages = [25, 30, 35]  
for name, age in zip(names, ages):  
    print(name, age)  
# 输出:  
# Alice 25  
# Bob 30  
# Charlie 35
11. enumerate() - 返回序列的索引和值 
seasons = ['spring', 'summer', 'autumn', 'winter']  
for index, season in enumerate(seasons):  
    print(index, season)  
# 输出:  
# 0 spring  
# 1 summer  
# 2 autumn  
# 3 winter
 12. id() - 返回对象的唯一标识符
x = 10  
print(id(x))  # 输出对象的唯一ID,每次运行可能不同
 13. all() 和 any() - 检查可迭代对象中的所有元素是否都满足条件
numbers = [1, 2, 3, 0]  
all_positive = all(num > 0 for num in numbers)  
print(all_positive)  # 输出:False  
  
any_positive = any(num > 0 for num in numbers)  
print(any_positive)  # 输出:True
 14. round() - 对浮点数进行四舍五入
num = 3.14159  
rounded_num = round(num, 2)  # 保留两位

 这些内置函数在 Python 编程中非常常用,掌握它们的用法可以大大提高编程效率。

8.如何查看内置函数和变量

在Python中,你可以通过访问builtins模块来查看所有的内置函数和变量。builtins模块包含了Python解释器启动时预定义的所有内置标识符。你可以通过以下方式查看这些内置函数:

import builtins  
  
# 打印所有内置函数  
for item in dir(builtins):  
    if callable(getattr(builtins, item)):  
        print(item)

上述代码导入了builtins模块,并使用dir()函数获取该模块的所有属性名。然后,它使用callable()函数检查每个属性是否可调用(即是否是函数或方法)。如果是可调用的,就打印出该属性的名称。

另外,你也可以直接在Python解释器或脚本中使用dir(__builtins__)来获取内置标识符的列表,但这样还会包括一些非函数的内置对象,如异常、警告等。要过滤出函数,你可以使用上面的callable()检查。

如果你只对某个特定的内置函数感兴趣,例如len(),你可以直接访问它,或者通过getattr(builtins, 'len')来获取它。

# 直接访问内置函数  
print(len([1, 2, 3]))  # 输出:3  
  
# 通过builtins模块访问内置函数  
print(getattr(builtins, 'len')([1, 2, 3]))  # 输出:3

 需要注意的是,__builtins__是Python解释器提供的一个内置变量,它通常与builtins模块的内容相同。在大多数Python环境中,你可以直接使用__builtins__来访问内置函数和变量,但官方文档推荐使用builtins模块,因为它提供了更明确和可移植的接口。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1517145.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IDEA中配置Tomcat

文章目录 一、创建Web项目二、配置tomcat三、启动Tomcat 一、创建Web项目 1.首先我们要用IDEA创建一个普通的java项目。 2.我创建的项目名称为myTomcat&#xff0c;想要开发web程序&#xff0c;我们还要做一下操作。 首先我们先给项目添加框架支持...&#xff0c;我的 idea 版…

Python实现BOA蝴蝶优化算法优化循环神经网络回归模型(LSTM回归算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 蝴蝶优化算法(butterfly optimization algorithm, BOA)是Arora 等人于2019年提出的一种元启发式智能算…

区别于传统家!三翼鸟定制智慧家电家居一体化场景

在这个科技创新、智能AI主导的时代&#xff0c;寻求更便捷智慧、舒心适宜、一体化的居家场景&#xff0c;成为一个时代的命题和竞赛&#xff0c;也是家居行业共同奔赴的使命。在纷繁复杂的竞争格局和方向答案中&#xff0c;一条清晰坚定的路径正在显露出来…… AWE前一天&…

关于联软UniAccess安全助手流氓行为,导致代码编译失败

今天公司里安装了这个东西, 就是监控软件 一举一动都被监控 早上我安装完 然后我继续工作编译代码, 用的clang.exe emscripten 编译webassembly项目 老是报错&#xff0c;而且次次报错 不一致 很奇怪的错误 我就想是不是我同步远端分支的原因, 折腾了好久, 发现已经的仓库也编…

sincecon品牌国货之光采用的聚甲基丙烯酸羟乙脂能够防护眼睛

sincecon品牌含硅半年抛华丽登场各种风格色系设计全都一网打尽给你挑花眼的囤货快乐&#xff0c; sincecon是KOOL旗下的一个品牌,品牌较大,且口碑很好,回头客很多。sincecon美瞳采用的聚甲基丙烯酸羟乙脂能够防护眼睛,不刺激眼睛,对眼睛的好处很大。

JavaScript 数组去重的方法12 种方法

数组去重&#xff0c;一般都是在面试的时候才会碰到&#xff0c;一般是要求手写数组去重方法的代码。如果是被提问到&#xff0c;数组去重的方法有哪些&#xff1f;你能答出其中的 10 种&#xff0c;面试官很有可能对你刮目相看。 在真实的项目中碰到的数组去重&#xff0c;一…

Kotlin/Java中String的equals和==

Kotlin/Java中String的equals和 在Java中&#xff0c;如果定义一个常量String和new出一个String对象&#xff0c;是不同的&#xff1a; String s1 "zhang" String s2 new String("zhang") 因为在Java看来&#xff0c;s1只是一个常量&#xff0c;会放在…

深入浅出讲解Python字符串格式化

字符串格式化操作符(%)&#xff0c;非常类似于C 语言里面的printf()函数的字符串格式化&#xff0c;甚至所用的符号都一样&#xff0c;都用百分号(%)&#xff0c;并且支持所有printf()式的格式化操作。语法如下&#xff1a; format_string % string_to_convert format_string为…

【Python】新手入门学习:详细介绍依赖倒置原则(DIP)及其作用、代码示例

【Python】新手入门学习&#xff1a;详细介绍依赖倒置原则&#xff08;DIP&#xff09;及其作用、代码示例 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、Py…

【深度学习笔记】7_7 AdaDelta算法

注&#xff1a;本文为《动手学深度学习》开源内容&#xff0c;部分标注了个人理解&#xff0c;仅为个人学习记录&#xff0c;无抄袭搬运意图 7.7 AdaDelta算法 除了RMSProp算法以外&#xff0c;另一个常用优化算法AdaDelta算法也针对AdaGrad算法在迭代后期可能较难找到有用解的…

了解关键字

关键字 定义&#xff1a;被Java语言赋予了特殊含义&#xff0c;用做专门用途的字符串&#xff08;或单词&#xff09; HelloWorld案例中&#xff0c;出现的关键字有 class、public 、 static 、 void 等&#xff0c;这些单词已经被Java定义好了。 特点&#xff1a;全部关键字都…

“多彩非遗 用爱编织”社区志愿者心理解压活动

为提升志愿者心理健康水平&#xff0c;帮助他们及时疏导情绪、缓解生活中的压力&#xff0c;构筑心理防线&#xff0c;促进身心健康&#xff0c;引导志愿者以积极的心态面对服务和生活中的压力&#xff0c;2月28日海滨街社工站在海滨街道西运社区开展了“多彩非遗 用爱编织”社…

力扣● 300.最长递增子序列 ● 674. 最长连续递增序列 ● 718. 最长重复子数组

● 300.最长递增子序列 1.dp数组含义。dp[i]&#xff1a;以nums[i]为结尾的递增子序列的最大长度。 注意一定是以nums[i]结尾&#xff0c;如果dp[i]定义错误的话&#xff0c;暴力也不知道咋整。 2.递推公式。这道题与背包的单词划分比较像&#xff0c;一个单层循环是弄不出来…

AJAX 02 案例、Bootstrap框架

AJAX 学习 AJAX 2 综合案例黑马 API01 图书管理Bootstrap 官网Bootstrap 弹框图书管理-渲染列表图书管理-添加图书图书管理-删除图书图书管理 - 编辑图书 02 图片上传03 更换图片04 个人信息设置信息渲染头像修改补充知识点&#xff1a;label扩大表单的范围 AJAX 2 综合案例 黑…

深入剖析Mysql事务和Spring事务,mongodb面试题2024

注意max_trx_id并不是m_ids中的最大值&#xff0c;事务id是递增分配的。比方说现在有id为1&#xff0c;2&#xff0c;3这三个事务&#xff0c;之后id为3的事务提交了。那么一个新的读事务在生成ReadView时&#xff0c;m_ids就包括1和2&#xff0c;min_trx_id的值就是1&#xff…

OSG编程指南<二十>:OSG路径动画

1、路径动画 如果读者耐心地读到这里,已经对路径动画不陌生了。因为前面很多处已经涉及路径动画,在很多示例中也用到了路径动画。路径动画就是按一定的插值方式生成路径,物体对象按照生成的路径或预先指定的路径来完成相应的动作的动画。 在 OSG 中,管理路径动画的核心类主…

数据结构——循环链表,双向链表,线性表和有序表的合并详解

目录 1.循环链表 1.带尾指针循环链表的合并 代码示例&#xff1a; 2.双向链表 代码示例&#xff1a; 1.双向链表的插入 ​代码示例&#xff1a; 2.双向链表的删除 代码示例&#xff1a; 3.单链表&#xff0c;循环链表&#xff0c;双向链表时间效率的比较 4.顺序表和链…

LSM树(Log-Structured-Merge-Tree)

学习笔记&#xff1a;参考LSM树详解 - 知乎 (zhihu.com) NoSQL&#xff08;HBase,LevelDB,RocksDB&#xff09;采用LSM树 核心&#xff1a;利用顺序写来提高性能&#xff0c;但因为分层&#xff08;内存和文件两部分&#xff09;的设计会降低读性能。//牺牲小部分读性能来换高…

Hack The Box-Codify

目录 信息收集 rustscan nmap dirsearch WEB 提权 get user get root 信息收集 rustscan ┌──(root㉿ru)-[~/kali/hackthebox] └─# rustscan -b 2250 10.10.11.239 --range0-65535 --ulimit4500 -- -A -sC .----. .-. .-. .----..---. .----. .---. .--. .-. …

漏洞复现-金蝶系列

漏洞复现-金蝶系列 Apusic 金蝶天燕Apusic 应⽤中间件代码命令执⾏金蝶云星空RCE金蝶云OA星空 CommonFileserver 任意文件读取金蝶云星空 管理中心介绍⾦蝶 EAS 系统存在⽬录遍历金蝶EAS myUploadFile任意文件上传实战之金蝶RCE上传绕过金蝶云金蝶云SaveUserPassport存在反序列…