from modname import *
这一句里的星号应该是沿用自正则中一样的意义,表示的是全部的意思,文中指出少用这种导入方式,我觉得是如果将一个模块的所有函数名导入当前命名空间中,如果不同模块包含了函数名相同的函数,或者是与自己编写得函数名相同将会导致混乱,而且在 debug 时还不容易发现。
在需要导入包中所有模块时,import* 还是有意义的。
只需要在 __init__.py 文件里面将所有模块名定义在列表 __ALL__ 中就能解决你最后的担忧。
这种方式进行导入,如果不同模块之间有相同的函数命名,最后导入的会覆盖前面的,也就是说只会调用到最后导入进的函数。
关于导入模块,自己写的程序,自己也可以把它保存下来,以后需要的时候导入使用,例如下面所示。
我有个代码名称为 test1.py,它的所在路径为 D:\test 下面。那我只需要完成以下步骤就可以把它作为模块 import 到其他代码中了。
在 test2.py 中我们就可以直接 import test1.py 了。成功导入后,test1中 的方法也就可以在 test2 中进行使用。
import test1
python文件写入也可以进行网站爬虫,我的python版本是3.6,以下代码是打开project.txt文件,并向里面写入http://www.baidu.com网站代码。
from urllib import request response = request.urlopen("http://www.baidu.com/") # 打开网站 fi = open("project.txt", 'w') # open一个txt文件 page = fi.write(str(response.read())) # 网站代码写入 fi.close() # 关闭txt文件
input() 默认输入的为 str 格式,若用数学计算,则需要转换格式,例:
a=input('请输入数字:') print(a*2)
假设输入数值为3,则上例中得出结果为:
33
若将代码修改为:
a=int(input('请输入数字:')) print(a*2)
则结果为:
6
通过 pickle 序列化实现一个简单联系人信息管理:
import pickle import os datafile = 'person.data' line = '=======================================' message = ''' ======================================= Welcome bookmark: press 1 to show list press 2 to add pepole press 3 to edit pepole press 4 to delete pepole press 5 to search pepole press 6 to show menu press 0 to quit ======================================= ''' print(message) class Person(object): """通讯录联系人""" def __init__(self, name, number): self.name = name self.number = number # 获取数据 def get_data(filename=datafile): # 文件存在且不为空 if os.path.exists(filename) and os.path.getsize(filename): with open(filename,'rb') as f: return pickle.load(f) return None # 写入数据 def set_data(name, number, filename=datafile): personList = {} if get_data() == None else get_data() with open(filename,'wb') as f: personList[name] = Person(name,number) pickle.dump(personList,f) # 保存字典格式的数据到文件 def save_data(dictPerson, filename=datafile): with open(filename,'wb') as f: pickle.dump(dictPerson,f) # 显示所有联系人 def show_all(): personList = get_data() if personList: for v in personList.values(): print(v.name,v.number) print(line)
from modname import *
这一句里的星号应该是沿用自正则中一样的意义,表示的是全部的意思,文中指出少用这种导入方式,我觉得是如果将一个模块的所有函数名导入当前命名空间中,如果不同模块包含了函数名相同的函数,或者是与自己编写得函数名相同将会导致混乱,而且在 debug 时还不容易发现。
在需要导入包中所有模块时,import* 还是有意义的。
只需要在 __init__.py 文件里面将所有模块名定义在列表 __ALL__ 中就能解决你最后的担忧。
from modname import *
这种方式进行导入,如果不同模块之间有相同的函数命名,最后导入的会覆盖前面的,也就是说只会调用到最后导入进的函数。
关于导入模块,自己写的程序,自己也可以把它保存下来,以后需要的时候导入使用,例如下面所示。
我有个代码名称为 test1.py,它的所在路径为 D:\test 下面。那我只需要完成以下步骤就可以把它作为模块 import 到其他代码中了。
在 test2.py 中我们就可以直接 import test1.py 了。成功导入后,test1中 的方法也就可以在 test2 中进行使用。
import test1
python文件写入也可以进行网站爬虫,我的python版本是3.6,以下代码是打开project.txt文件,并向里面写入http://www.baidu.com网站代码。
from urllib import request response = request.urlopen("http://www.baidu.com/") # 打开网站 fi = open("project.txt", 'w') # open一个txt文件 page = fi.write(str(response.read())) # 网站代码写入 fi.close() # 关闭txt文件
input() 默认输入的为 str 格式,若用数学计算,则需要转换格式,例:
a=input('请输入数字:') print(a*2)
假设输入数值为3,则上例中得出结果为:
33
若将代码修改为:
a=int(input('请输入数字:')) print(a*2)
则结果为:
6
通过 pickle 序列化实现一个简单联系人信息管理:
import pickle import os datafile = 'person.data' line = '=======================================' message = ''' ======================================= Welcome bookmark: press 1 to show list press 2 to add pepole press 3 to edit pepole press 4 to delete pepole press 5 to search pepole press 6 to show menu press 0 to quit ======================================= ''' print(message) class Person(object): """通讯录联系人""" def __init__(self, name, number): self.name = name self.number = number # 获取数据 def get_data(filename=datafile): # 文件存在且不为空 if os.path.exists(filename) and os.path.getsize(filename): with open(filename,'rb') as f: return pickle.load(f) return None # 写入数据 def set_data(name, number, filename=datafile): personList = {} if get_data() == None else get_data() with open(filename,'wb') as f: personList[name] = Person(name,number) pickle.dump(personList,f) # 保存字典格式的数据到文件 def save_data(dictPerson, filename=datafile): with open(filename,'wb') as f: pickle.dump(dictPerson,f) # 显示所有联系人 def show_all(): personList = get_data() if personList: for v in personList.values(): print(v.name,v.number) print(line)