day13_模块

前言回顾

import json

1.生成式

结构1:
(表达式 for 变量 in 序列)

def func():
    for 变量 in 序列:
        yield 表达式

结构2:
(表达式 for 变量 in 序列 if 条件语句)

def func():
    for 变量 in 序列:
        if 条件语句:
            yield 表达式

2.文件操作

  1. 打开文件 -> 2) 操作文件(读/写) -> 3) 关闭文件
    (1) open(文件地址, 读写方式, encoding='utf-8') (读写方式默认值为 'r')

./ -- 当前目录
../ -- 当前目录的父级目录
'r' - 只读,读到的内容是字符串,文件地址不存在会报错
'w' - 只写,写文本,会清空原文件,文件地址不存在不会报错且会创建新文件
但是'w'可以创建新文件,不能创建文件夹,即必须在指定文件夹中创建文件
'br'/'rb' - 只读,读到的内容是bytes,文件地址不会报错
'wb'/'bw' - 只写,写二进制,清空文件,文件地址不存在不会报错会创建新文件(不会创建文件夹)
'a' - 只写,写文本,不会清空文件,而是在文件的最后添加内容。文件地址不存在不会报错会创建新文件(不会创建文件夹)

(2) read()/write()

(3) close() - 文件关闭后不能操作

with open() as 文件对象:
文件操作

3.json数据

  1. 什么数据是json数据: a:有且只有一个数据 b.这个数据必须是json支持的数据
    数字 - 19, 239.4, 3e3 (int,float,科学计数)
    字符串 - "abc", "\tabc", "\u4e00"
    布尔 - true/false
    数组 - [12, "abc", true]
    字典 - {"name": "小明", "age": 18, "gender":true}
    null

  2. json转python
    json.loads(字符串, encoding='utf-8')
    json.load(文件对象) - 将指定文件中的json数据转换成python数据

  3. python转json
    json.dumps(python数据)
    json.dump() - 将python数据装换成json数据,

list1 = json.loads('[12, "abc", true]', encoding='utf-8')
print(list1)

array_list = json.dumps({'name': '张三', 12: 200, 'gender': True})
print(array_list)

with open('a.txt', 'r', encoding='utf-8') as f:
    # result = json.load(f)
    result = json.loads(f.read())
    print(type(result), result)
    
    with open('a.txt', 'w', encoding='utf-8') as f:
        data = json.dump([1, 'abc', True])

1.什么是模块

python中的一个py文件就是一个模块
模块能被其他模块使用的有:全局变量

2.导入模块

  1. import 模块名 - 在当前模块中导入指定模块,导入可以使用指定模块中的所有声明过的全局变量

通过'模块名.变量名'
导入模块一般写在最上面

import 模块名 as 新模块名 - 对导入的模块进行重命名

  1. from 模块名 import 变量1,变量2,... - 在当前模块中导入指定模块,只能使用import后面指定的变量

通过'变量'

from 模块名 import 变量1 as 新变量名1,变量2 as 新变量,变量3...

# =====1) import直接导入=====
import test1

print(test1.num)
test1.num = 200
print(test1.num)
print(test1.a)

test1.test_func1()
test1.test_func2('你好')

# =====2) from导入=====
from test1 import num, a, test_func2
print(num)
print(a)
print(test_func2(10))
print(test1.a)  # NameError: name 'test1' is not defined

# =====2) 重命名=====
# 模块重命名
import test1 as T1
print(T1.num)


# 变量重命名
# from test1 import num as test1_num,

3.导入模块的原理

  1. 通过import或者from-import导入模块,本质就是去执行模块中的代码
  2. 怎么阻止导入:将需要阻止的代码直接或者间接放在if-main语句中
if __name__ == '__main__':
    需要阻止导入的代码块
  1. 阻止导入的原理(了解)
    每个模块都有'name'属性,这个属性的默认值是模块的名字。
    当我们直接执行模块(在文件里面run)的时候,这个模块的name的值就会自动变成main
    (即当前执行的文件的名字为main, 输出name显示main)
import test1
# from test1 import num
print('module的名字:', __name__)
print('+++++')
import math
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • day_13_模块 1.什么是模块 python中一个py文件就是一个模块 2.导入模块 import 模块名 -...
    生命在于不睡觉阅读 871评论 0 0
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 11,120评论 0 10
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,794评论 1 32
  • 模块和包 一 模块 1 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是...
    go以恒阅读 6,725评论 0 4
  • (美)戴维·珀尔马特(David Perlmutter);(美)克里斯廷·洛伯格(Kristin Loberg) ...
    鲍廷俊阅读 2,900评论 0 2