python面向对象day4

1.模块中的__all__

"""
掌握 模块中的 __all__

1. 补充: 导入模块的语法
    import 模块名
    from 模块名 import 函数名1,函数名2,类名1,类名2...........

    # * 代替的是(from 模块名 import 成员名) 中的成员名
    from 模块名 import *

2. from 模块名 import * : 一次性导入模块中的所有内容
    缺点: 导入的内容太多,不一定都用, 浪费空间
    解决: 通过 __all__ = ["类名","函数名","变量"] 限制只能导入列表中的内容
"""
# 成功导入
# from func import remove_blank,hello,show
# show()

# 通过 * 统配符一次导入模块 中的所有内容
from func import * # remove_blank,hello,show

# 导入后如何使用
hello()
# show()
res = remove_blank("我 也 很 耍  帅")
print(res)


2.模块的定位

"""
掌握模块的定位

1. 导入模块的,系统寻找模块(某个路径中查找)
    如果找不到,抛出异常 ModuleNotFoundError

2. 模块的查找路径(模块的定位)
    (1) 系统规定死的路径
        先后顺序:
        a. 内置模块路径(python.exe中), 任意地方都能使用
        b. 系统标准模块路径(python安装路径/Lib目录中), 任意地方都能使用
        c. 主执行文件所在当前目录
        d. 第三方包的安装路径(pip install PyMySQL): python安装路径/Lib/site-packages,
        任意地方都能使用

    (2) 自定义的路径
        任意指定一个路径作为包/模块的查找路径
        实现方式:
        import sys
        sys.path    # 系统路径, 列表, 可以修改的
        sys.path.append("新目录路径")
        sys.path.insert(0,"新目录路径")

3. 补充坑爹货(pycharm)
    pycharm自动将 项目根目录添加到了 sys.path 中, 原本可能是没有的
"""
# 导入模块
# import xxx
import func
# 查看内置模块
import sys

print(sys.path)
# print(sys.modules) # 查看系统模块

# 导入
import pymysql

# 添加xxx目录的路径
sys.path.append("D:\\selfmodule")
# 随意导入
import xxx
xxx.hello()

# 导入yyy模块, 本质是错误的
import yyy


3.包的使用

"""
掌握 包的使用

1. 标准的包中有个__init__.py文件, 是一个目录.

2. 作用: 管理多个模块/包

3. 包的使用
    from 包名 import 模块名
    from 包名.模块名 import 函数/类/变量
    from 包名.模块名 import *

    # 导入包中的所有模块
    from 包名 import *

4. from 包名 import * : 一次性导入所有的模块
    缺点: 会导入很多的模块及内容到内存中, python要求必须限制能够导入的模块
    解决: 在 __init__.py 文件中通过 __all__ = ["模块名"] 指定能够导入的模块
"""
# 使用包
# from mypackage import func
# func.hello()

# from mypackage.func import hello
# hello()

# from mypackage.func import *
# hello()

# 导入包中的所有模块
from mypackage import *
func.hello()
c = res.Cooker()
c.cook()

4.range()

"""
range(): 函数用于生成指定范围的对象(可迭代对象)
    使用方式:
    obj = range(start,end,step)
        start: 默认0
        end: 设置(包前不包后)
        step: 默认1

    # 转换成立列表
    list(obj)
    # 直接遍历
    for .. in ...
"""

data = range(0,100,3)
print(data)
# print(list(data))
for i in data:
    print(i)

tmp = [1,2,3,1,1]
len = len(tmp)
print(len)
# print(list(range(len)))
ilist = []
for i in range(len):
    if tmp[i] == 1:
        ilist.append(i)
print(ilist)

5.给程序传递参数

"""
了解 :  给程序传递参数

1. 给程序传递参数: 指给python.exe传递参数
    传递参数的方式:
        python.exe 脚本路径 参数2 参数3
    接收参数的方式:
        import sys
        sys.argv

场景: 测试报告发送给xxx的xxx邮箱
"""
# 接收参数
import sys
print(sys.argv) # 接收程序的参数

# 测试报告
test_report = "你的功能毫无问题!"
# 录入信息
name = sys.argv[1]
email = sys.argv[2]
# 发送邮件
print(f"发送邮箱给{name},邮箱地址为:{email},报告为:{test_report}")


6.列表推导式

"""
掌握: 列表推导式


1. 概念: 列表推导式 根据指定的表达式 用于快速生成列表

    语法:
       变量 = [表达式 for tmp in 容器 简单if语句]  # 简单 if xxx else xxx

"""

# 生成1-100每个数的平方的列表
# 生成1-100
# result = [i**2 for i in range(1,101)]
# print(result)


# 生成1-100中 偶数 数的平方的列表
# result = [i**2 for i in range(1,101) if i%2==0]
# print(result)

# 快速获取1的索引
# tmp = [1,2,3,1,1]
# result = [i for i in range(len(tmp)) if tmp[i] == 1]
# print(result)


"""
练习:
请写出⼀段Python代码实现分组⼀个list⾥⾯的元素,⽐如
[1,2,3,...100]变成	[[1,2,3],[4,5,6]....]
参考答案:
a	=	[x	for	x	in	range(1,101)] 
b	=	[a[x:x+3]	for	x	in	range(0,len(a),3 )]
"""
# 创建列表
a = list(range(1, 101))
print(a)
# 获取指定列表
# b = [a[0:3],a[3:6],a[6:9],a[9:12]]
b = [a[i:i + 3] for i in range(0, len(a), 3)]
print(b)

# i=1
# result = []
# while i<=100:
#     result.append(i**2)
#     i+=1
# print(result)

7.集合操作初级

"""
集合操作

1. 集合可以用于去重

2. 集合可以运算
    交集: &
    并集: |
    差集: -

"""
# 考语文的人的名单
yw = ["张飞", "李四", "王五", "貂蝉", "小乔", "大乔"]
# 选数学
sx = ["貂蝉", "小乔", "大乔", "周瑜", "诸葛亮"]

# 同时选语文和数学的名单
result = list(set(yw) & set(sx))
print(result)

# 只选择语文课的同学名单
result = list(set(yw) - set(sx))
print(result)

# 全部同学名单
result = list(set(yw) | set(sx))
print(result)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值