python自定义标识符_小白学Python——自定义模块的使用

原标题:小白学Python——自定义模块的使用

8c9d586626bd4e1ba4cc252cba2899a4.jpeg

自定义模块导入:

要求:

模块文件后缀必须以.py结尾

模块文件名必须是合法的标识符

避免名称和内建模块名冲突

导入方式:

import语句

from import 语句

from import * 语句

正确的模块名:

mymod.py avde.py abc123.py

错误的模块名:

123.py abc.cpp math.py

示例见:

mymod.py #自定义模块函数

test_mymod.py #主模块(用来导入和调用mymod里的函数)

ae16b56acf634d0dac5c314f48835f78.png

cf34d83265c74daabb9792b07206ac30.png

编辑

运行 test_mymod.py 将调用 mymod.py 中的全局变量 “myfac”、“mysum”、“name2”

结果如下:

a1d19510510c4c78b5ea9f0770b7ca7b.jpeg

import 语句 搜索模块的路径顺序

搜索内建模块

索引程序的运行时路径(当前工作目录)

sys.py(模块的搜索路径)提供的路径

sys.path是一个列表,里面放的都是模块的搜索路径

模块化编程的优点:

有利于多人合作开发

使代码更加利于维护

提高代码的复用率

模块化编程有助于解决函数名和变量名冲突(重名)问题,模块内的变量作用域为模块内全局(不同的变量内可以有相同的全局变量)

模块的加载过程:

在模块导入时,模块内的所有语句都会执行

如果一个模块已经导入,则再次导入是不会重新执行模块内的语句

模块的重新加载:

39cdb2e341984b2aba7ba644d47c17a4.png

模块被导入的执行过程:

先搜索相关的路径,找到.py文件

判断是否由此文件对应的.pyc文件,如果没有.pyc文件,则用.py文件生成.pyc文件

如果存在.pyc文件,需要判断.py文件是否比.pyc文件新,如果新则重新生成.pyc,然后再加载.pyc文件

pyc文件(相当于加载的缓存程序),模块的编译文件

编译 解释执行

例如 mymod.py----------->mymod.pyc ------------> python3

模块的属性:

模块的文档字符串:

__doc__属性

作用:用来绑定文档字符串

示例见:mymod__doc__.py

3615e647a1944ce8ab2acea9dc0a3c5e.png

编辑

运行结果如下:

6662130ffa4a48a3847a7fda998a0291.jpeg

__file__属性:

作用:用来绑定模块对应的文件路径名

注意:内建函数没有__file__属性(如:math)

示例见:mymod__file__.py

994388e7829b4d6d90cd5b80baac4a79.png

运行结果如下:

56b32f8ac7a9491ebcc23a01238720b6.jpeg

__name__属性

作用:

用来记录模块自身的名字

用来判断是否为主模块

注意:主模块是指程序汇总的第一执行起来的模块

说明:

当此模块作为主模块运行时,__name__属性 绑定 '__main__’

当此模块不作为主模块运行时,此__name__属性绑定模块名

如:mymod.py 的模块名为 ‘mymod’

模块的 __all__列表:

模块中的 __all__列表是一个用来存放可导出属性的字符串列表

作用:

限定在用from xxx import * 导入时,只导入 __all__列表内的属性

注意:此__all__列表,只对 from import * 语句有效

示例见:

第一步:建立一个模块 mymod3.py

# mymod3.py

#首先 建立一段函数

a3f9a234391141d2ba4297004e89dbf4.png

第二步:建立导入模块 示例见 import_mymod3.py

38f633cd0b454e618d1ff2370838fea2.png

第三步:运行import_mymod3.py

模块中 mymod3.py 变量 f1 f2 f3 name1 name2,被导入

20c5f44fa5524b3cbcecf25f685cb594.jpeg

第四步:如果 只想导入" f1 , name1 " , 其他" f2 , f3 , name2 "不被导入

接下来使用 __all__函数,示例如下

3975fe24d3414addadd15dbf213a6976.png

接下来运行: import_mymod3.py

将会只导入 f1 , name1

8e2681e6424e4b11ba4094ff7a1f9948.jpeg

模块的隐藏属性

模块汇总以 下划线(_) 开头的属性, 在from import * 语句导入时

将不被导入,通常称为这些属性为隐藏属性

示例见:mymod4.py

1ed83c26280a458e9970f85365e9b530.png

建立导入模块 示例见 import_mymod3.py

0d276ae7faf94d6dabefb8da3c32b7fb.png

运行 import_mymod4.py

c35fddeb37f94a349947e82d141eb8ba.jpeg

标准库模块

随机模块 random

作用:

用于模拟或生成随机数的模块(摇塞子)

import random as R

R.random() #返回一个[0,1)之间的随机实数

R.uniform(a,b) #返回[a,b]之间的随机实数

R.randint(a,b) #返回[a.b]范围内的整数(包含a,b)

R.randrange([start,] stop[,step]) #返回range(start,stop,step)中的随机数字

R.choice(seq) #从序列中返回随意元素

R.shuffle(seq[,random]) #随机指定序列的顺序(乱序序列)

R.sample(seq,n) #从序列汇总选择n个随机且不重复的元素

练习:

1.猜数字游戏

随机生成一个0~100的整数,用变量x绑定

让用户输入一个数字y,输出数字的结果

如果y大于x,则提示“您猜大了”,继续让用户猜下去

如果y小于x,则提示“您猜小了”,继续猜

如果y等于x,,则提示“恭喜您猜对了”,打印出猜数字的次数,然后退出程序

注意:知道猜对才能退出

7e55fa79f5f74912946d467fc9932005.png

运行结果:

e96113321f52498487c5dfa4eca3bf42.jpeg

更多学习笔记请关注我的公众号!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值