持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天,点击查看活动详情
大家好,我是芒果,一名非科班的在校大学生。对C/C++、数据结构、Linux及MySql、算法等领域感兴趣,喜欢将所学知识写成博客记录下来。 希望该文章对你有所帮助!如果有错误请大佬们指正!共同学习交流
作者简介:
- CSDN C/C++领域新星创作者blog.csdn.net/chuxinchang…
- 掘金LV3用户 juejin.cn/user/138142…
- 阿里云社区专家博主,星级博主,技术博主 developer.aliyun.com/profile/exp…
- 华为云云享专家 bbs.huaweicloud.com/community/m…
import语句
import语句导入模块, 可以一次import一个, 或者一次import多个->用,分割
#方式1:
import os
import sys
#方式2:
import os,sys #用逗号分割
推荐使用第一种方式, 这样代码看起来更好看一些
import语句的顺序: 我们推荐按 Python标准库, Python第三方库, 应用程序自定制模块 的顺序来import, 来提高我们代码的可读性.
模块也是一个对象, 也有作用域这样的概念. 在函数内部import, 那么这个模块的作用域就是在这个函 数内.
例子:
def func():
import sys
print('In func',sys.argv) #In func ['E:/Python文件存储/Class01.py']
func()
print('Out func',sys.argv) #报错 NameError: name 'sys' is not defined
既然模块也是一个对象, 那么也可以给这个对象赋值(相当于定义别名).
import os.path
p = os.path #起别名
print(p.exists('add.py')) #add.py这个文件是否存在 True
这样可以一定程度上简化我们的代码(敲一个字符p肯定比敲一串字符os.path要方便).
import as语句
前面我们使用赋值的方式, 给模块起了一个很短的别名. 实际上使用import-as可以更方便的完成这个动作
import os.path as p
print(p.exists('add.py')) #add.py这个文件是否存在 True
from-import 语句
import语句是直接导入一个模块. 而有时候我们只需要用到模块中的某一个或几个函数, 就可以使用from- import
from-import相当于把模块中的名字引入了当前文件的命名空间中.可以直接使用导入的函数
from os.path import exists
print(exists('add.py')) #True
可以使用 from module import *的方式将module模块中的所有名字都导入进来. 不推荐这么用.
*:通配符
导入模块意味着 "被执行"
模块导入意味着这个模块 "被执行" , 也就是说所有顶层的代码(无缩进部分的代码)都会被执行到. 这通常包括函数的定义和全局变量的定义.
例子:
add.py 的内容:
'''
定义两数相加的函数
'''
def _Add(x,y):
return x+y
print("In Add函数内部")
test.py的内容
import add
#执行结果:
In Add函数内部
这往往不是我们期望的结果(比如导入模块是打印了一些奇怪的日志), 我们只是想使用模块中的一些函数和变量. 因此往往我们在实现一个模块时, 只将函数定义/类定义放到顶层代码中.