# ///////////PY.09:Python生态环境///////////////////////////////////
# ====================================================
# 目录:
# 一、模块引用(2个语法,引用和调用)
# 二、python标准库引用
# 三、python的内置函数
# ====================================================
# //////////////一、模块引用//////////////////////////
# 模块(又叫“库”):平常写的这种python文件就叫模块:
# 在一个py文件中写了很多函数供使用,
# 那么在另外一个py文件中就可以引用这个py文件写的函数。
#
# ===========1.import=====================
# import <模块名> as <别名>
# 示例:自己写一个模块再引用:
# 1.写模块:创建文件e.txt
f = open('ku.py', 'w', encoding='utf-8')
# 'w':覆盖写模式,没有则创建,有了则覆盖。
# 已经点开ku.py并写入函数,现在进行调用
import ku
ku.func1() # 输出:这里是函数1 ##调用成功
ku.func4() # 输出:这里是函数4 ##调用成功
# 使用as
import ku as k
k.func3() # 输出:这里是函数3 ##调用成功
# ===========2. from …… import …… =========
# from <模块名> import <对象、函数>
# 用我们已经写好的ku.py文件进行示例:
from ku import func1 # 引用1个
from ku import func1, func2, func3 # 引用多个(用逗号隔开)
# 调用
func1() # 这里是函数1
func2() # 这里是函数2
func4() # 报错:NameError: name 'func4' is not defined(因为没引func4)
k.func4() # 这里是函数4 (成功调用,因为k引入了)
# //////////////二、python标准库的引用//////////////////////////
# 想不起来具体的函数名的时候可以引入全部的函数,比如:
from random import *
print(randint(1,10))
# 标准库引用的语法总结:
# 1)import <库名>:<库名>.<函数名>(<函数参数>)
# 2)from <库名> import <函数名>: <函数名>(<函数参数>)
# from <库名> import * :<函数名>(<函数参数>)
# 3) import <库名> as <库别名>: <库别名>.<函数名>(<函数参数>)
# //////////////三、python的内置函数/////////////////////
# 内置函数:是指python自带的文件中定义好的库函数
# 可以直接调用,不用再引用库
# python常用的内置函数(编程题中常用):
#
#-------------- <1>数值运算相关:-----------------
# 1. abs(x) >> x的绝对值;若x是复数,则返回x的模
x = int(input('取该数的绝对值:'))
num = abs(x)
print(num) # 输出:257
# 2. divmod(a, b) >> 返回a和b的商及余数,以元组的形式
divmod(10, 3)
# 3. pow(x, y) >> 返回x的y次幂
pow(2, pow(2, 2)) # 16
print(pow(2, pow(2, 3))) # 256
# 4. round(n) >> 对n进行四舍五入
round(9.8) # 10
print(round(5.2367, 2)) # 第二个参数:保留几位小数(输出5.24)
# 5.all(x) >> 判断组合类型变量(元组,集合 等)中元素的真假
# 组合类型变量x中所有元素都为真时返回True, 否则返回False;
# 若x为空,也返回True
Is = [True, True, 1]
print(all(Is)) # True
# 6. any(x) >> 组合类型变量x中任一元素都为真时返回True,否则返回False;
# 若x为空,返回True
# 7. reserved(x) >> 返回组合类型r的逆序形式
# 8. sorted(x) >> 对组合数据类型x进行排序,默认从小到大
# 9. sum(x) >> 对组合数据类型x计算求和结果
#-------------- <2>其他相关:-----------------
# 下面三个很常用!!
# eval(s) :计算字符串s作为python表达式的值
# exec(s) :计算字符串s作为python语句的值(语句:带赋值号“=”的表达式)
# 功能:去除字符串两边的双引号
#
# eval()
Iss = "[1,2,3,27,58,49,62,75]" # 列表形式的字符串
print(eval(Iss)) # 输出列表
print(type(Iss)) # <class 'str'>
#
# exec()
exec("a = 1+998")
print(a) # 999
# range(a, b, s) :从a到b(不包含b)以s为步长产生一个序列
# range的三种玩法:
# 1)range放一个参数:(***range一般也就这么用)
for i in range(8):
print(i) # 输出:0 1 2 3 4 5 6 7 ##(不会到8)
# range(n): 产生从0到n-1(不包含n)的数值序列