当前位置: 首页 > news >正文

网站后台有安全狗wordpress如何设置邮箱设置

网站后台有安全狗,wordpress如何设置邮箱设置,wordpress 数据库前缀,产品开发流程8个步骤的总结9.1模块化编程 对于一个真实的Python编程#xff0c;不可能自己完成所有的工作#xff0c;通常需要借助第三方类库。此外#xff0c;也不可能在一个源文件中编写整个程序的源代码#xff0c;这些都需要以模块化的方式来组织项目的源代码。 9.1.1 导入模块的语法 import导…9.1模块化编程 对于一个真实的Python编程不可能自己完成所有的工作通常需要借助第三方类库。此外也不可能在一个源文件中编写整个程序的源代码这些都需要以模块化的方式来组织项目的源代码。 9.1.1 导入模块的语法 import导入模块的语法实际上import还有更多详细的用法。import语句主要有两种用法 import 模块名1[as 别名1]模块名2[as 别名2]…导入整个模块。from 模块名 import 成员名1[as 别名1]成员名2[as 别名2]…导入模块中指定成员。 上面两种import语句的区别主要有三点 第一种import语句导入整个模块内的所有成员包括变量、函数、类等第二种import语句只导入模块内的指定成员除非使用from模块名import*但通常不推荐使用这种语法。但使用第一种import语句导入模块中的成员时必须添加模块名或模块别名前缀当使用第二种import语句导入模块中的成员时无须使用任何前缀直接使用成员名或成员别名即可。 #导入sys整个模块 import sys #使用sys模块作为前缀来访问模块中的成员 print(sys.argv[0])# main.py 上面程序代码使用最简单的方式导入了sys模块因此程序中使用sys模块内的成员时必须添加模块名作为前缀。 在导入整个模块时可以为模块指定别名。 #导入sys整个模块并指定别名为s import sys as s #使用s模块别名作为前缀来访问模块中的成员 print(s.argv[0])#main.py 上面程序在导入sys模块时指定了别名s因此在程序中使用sys模块内的成员时必须添加模块别名s作为前缀。 导入整个模块的语法也可以一次性导入多个模块多模块之间用逗号隔开。#导入sys、os两个模块 import sys,os #使用前缀名作为前缀访问模块中的成员 print(sys.argv[0])#main.py #os模块的seo变量代表平台上的路径分隔 print(os.sep)#\ 同时在导入多个模块时也可以为模块指定别名。 #导入sys、os两个模块并未sys指定别名s为os指定别名oimport sys as s,os as o#使用模块名作为前缀来访问模块中的成员print(s.argv[0])#main.pyprint(o.sep)#\ 接下来介绍from…import导入模块内指定成员的用法 #导入sys模块内的argv成员from sys import argv#使用导入成员的语法直接使用成员名访问print(argv[0])#main.py 使用from…import导入模块成员时也可以为成员指定别名。 #导入sys模块内的argv成员并为其指定别名vfrom sys import argv as v#使用导入成员的语法直接使用成员的别名访问print(v[0])#main.py 在使用from…import导入模块成员时也可以同时导入多个成员。 #导入sys模块内的argv、winver成员from sys import argv,winver#使用导入成员的语法直接使用成员名访问print(argv[0])#main.pyprint(winver)#3.12 在使用from…import同时导入多个模块成员时也可指定别名同样使用as关键字为成员指定别名。 #导入sys模块中的argv、winver成员并未其指定别名v、wvfrom sys import argv as v,winver as wv#使用导入成员指定别名的语法直接使用成员的别名访问print(v[0])#mian.pyprint(wv)#3.6 在使用from…import语法时也可以一次导入指定模块内的所有成员 #导入sys模块内的所有成员from sys import *#使用导入成员的语法直接使用成员的别名访问print(argv[0])#main.pyprint(winver)#3.6 需要说明的时一般不推荐使用“from 模块 imort *”这种语法导入指定模块内的所有成员因为它存在潜在的风险。避免导致在不同的模块中存在相同的方法或属性。 9.1.2 定义模块 模块就是Python程序。任何Python程序都可作为模块导入。前面我们写的所以Python程序都可作为模块导入。换而言之随便写一个Python程序其实都可作为模块导入。对于任何程序只要导入了模块即可使用该模块内的所有成员。 print(这是module 1)my_bookPythondef say_hi(user):print(%s您好欢迎学习Python%user)class User:def __init__(self,name):self.namenamedef walk(self):print(%s正在慢慢地走路%self.name)def __repr__(self):returnUser[name%s]%self.name 使用模块地好处在于如果将程序使用的程序单元定义在模块中后面不管哪个程序只要导入该模块该程序即可使用该模块所包含的程序单元这样就可以提供很好的复用——导入模块使用模块从而避免每个程序都需要重新定义这些程序单元。 9.1.3 为模块编写说明文档 与前面介绍的函数、类相同的是在实际开发中往往也应该为模块编写说明文档否则其他开发者将不知道该模块的作用以及包含哪些功能。 为模块编写说明文档很简单只要在模块开始处定义一个字符串直接量即可。 这是我们编写的第一个模块该模块包含以下内容my_book字符串变量say_hi简单函数User代表用户类 这段字符串内容将会作为该模块的说明文档可提供模块的__doc__属性来访问文档。 9.1.4 为模块编写测试代码 当模块编写完成之后可能还需要为模块编写一些测试代码用于测试模块中的每一个单元是否能都能正常运行。 由于模块其实是一个Python程序因此完全可以直接使用Python命令来解释和执行模块程序只要模块中包含可执行代码。 #以下部分是测试代码def test_my_book():print(my_book)def test_say_hi():say_hi(孙悟空)def test_User():uUser(白骨精)u.walk()print(u) 注意对于实现开发的项目对每个函数、类可能都需要使用更多的测试用例进行测试这样才能达到各种覆盖效果比如语句覆盖、条件覆盖等。 如果只是简单地调用上面的测试程序则会导致一个问题当其他程序每次导入该模块时这三个测试函数都会自动运行这显然不是期望见到结果。此时希望实现的效果是直接使用Python命令运行该模块相当于测试程序应该执行该模块的测试函数如果是其他程序导入该模块程序不应该执行该模块的测试函数。 此时可借助所有模块内置的__name__变量进行区分如果直接使用python命令来运行一个模块__name__变量的值是__main__如果该模块导入其他程序中__name__变量的值就是模块名。因此如果希望测试函数只是在使用python命令直接运行时才执行则可在调用测试函数时增加判断只有当__name__属性为__main__时才调用测试函数。为模块增加如下代码即可 #当__name__为__main__直接使用Python运行该模块执行如下代码if __name____main__:test_my_book()test_say_hi()test_User() 这时再次使用该程序命令来运行该代码模块时可以看到如下输出结果。 这是module 1Python孙悟空您好欢迎学习Python白骨精正在慢慢地走路User[name白骨精] 9.1.5 模块的__all__变量 在默认情况下如果使用“from模块名import*”这样的语句来导入模块程序会导入该模块中所有不以下划线开头的程序的单元这是很容易得到的结果。 有时候模块中虽然包含很多成员但并不希望每个成员都被暴露出来供外界使用此时可借助于模块的__all__变量将变量的值设置成一个列表只有该列表中的程序单元才会被暴露出来。 测试__all__的模块def hello():print(Hello Python)def world():print(Python World is funny)def test():print(--test--)#定义__all__变量默认只导入hello和world两个程序单元__all__[hello,world] 下面的__all__变量指定该模块默认值被导入hello和world两个程序单元。 from main import *hello()world()test()#会提示找不到test()函数 Hello PythonPython World is funnyTraceback (most recent call last):File , line 4, in moduletest()#会提示找不到test()函数^^^^NameError: name test is not defined 从上面输出结果可以看到通过“from 模块名 import*”语句确实只能导入__all__变量所列出的全部程序单元没有列出的test就没有被导入进来。 事实上__all__变量的意义在于为模块定义一个开放的公共接口。通常来讲只有__all__变量列出的程序单元才是希望该模块被外界使用的程序单元。因此为模块设置__all__变量还是比较有用的。比如一个实际的大模块可以包含了大量其他程序不需要使用的变量、函数、类那么通过__all__变量即可把它们自动过滤掉这还是非常酷的。 如果确实希望程序使用模块内__all__列表之外的程序单元有两种解决方法。 第一种是使用“import模块名”来导入模块。在通过这种方式导入模块之后总可以通过模块名前缀如果为模块指定了别名则可以使用模块的别名作为前缀来调用模块内的成员。第二种是使用“from 模块名 import 程序单元”来导入指定程序单元。在这种方式下即使想导入的程序单元没有位于__all__列表中也依然可以导入。 9.2 使用包 对于一个需要实际应用的模块而言往往会具有很多程序单元包括变量、函数和类等如果将整个模块的所有内容都定义在同一个Python源文件内这个文件将会变得非常庞大显然并不利于模块化开发。 9.2.1 什么是包 为了更好地管理多个模块源文件Python通过了包的概念。 从物理上看包就是一个文件夹在该文件夹下包含了额一个__init__.py文件该文件可用于包含多个模块源文件。从逻辑上看包的本质依然是模块。 上面介绍可以得出一个推论 包的作用是包含多个模块但包的本质依然是模块因此包也可用于包含包。典型的当我们为Python安装了numpy模块之后可以在Python安装目录的Lib\site-packages目录下找到一个numpy文件夹它就是安装的numpy模块其实就是一个包。 9.2.2 定义包 定义包很简单主要有两步 创建一个文件夹该文件夹的名字就是该包的包名。在该文件夹内添加一个__init__.py文件即可。 这是学习包的一个示例print(this is first_package) 上面的Python源文件非常简单该文件开始部分的字符串是该包的说明文档接下来是一条简单的输出语句。 #导入first-package包模块import first_packageprint()print(first_package.__doc__)print(type(first_package))print(first_package)这是学习包的一个示例class modulemodule first_package from 与模块类似的是包被导入之后会在包目录下生成以一个__pycahce__文件夹并在该文件夹内为包生成一个__init__.cpython-312.pyc文件. 由于导入包就相当于导入该包下的__init__.py文件因此我们完全可以在__init__.py文件中定义变量、函数、类等程序单元但实际上往往不会这么做。包主要作用是包含多个模块因此__init__.py文件的主要作用就是导入该包内的其他模块。 下面定义一个更复杂的包在该包下将会包含多个模块并使用__init__.py文件来加载这些模块。 新建一个fk_package包并在该包下包含三个模块文件 print_shape.pybilling.pyarithmetic_chart.py fk_package的文件结构如下 fk_package |——arithmetic_chart.py |——billing.py |——print_shape.py |——__init__.py 其中arithmetic_chart.py模块文件的内容如下 def print_multipe_chart(n):打印乘法口诀表的函数for i in range(n):for j in range(i1):print(%d * %d %2d % ((j1),(i1),(j1)*(i1)),end  )print() billing.py模块文件的内容如下 class Item:定义代表商品的Item类def __init__(self,price):self.price pricedef __repr__(self):return Item[price%g] % self.price print_chart.py模块文件内容如下 def print_blank_tringle(n):打印一个由星号组成的空心的三角形if n0:raise ValueError(n必须大于0)for i in range(n):print( *(n-i-1),end)print(*,end)if i!n-1:print( *(2*i-1),end)else:print(**(2*i-1),end)if i!0:print(*)else:print() fk_package包下的__init__.py文件暂时为空不用编写任何内容。 9.2.3 导入包内成员 如果需要使用arithmetic_chart、billing和print_shape这三个模块则可在程序fk_package_test01.py中执行如下代码 #导入fk_package包实际上导入包下的__init__.py文件import fk_package#导入fk_package包下的print_shape模块#实际上就是导入fk_package目录下的print_shape.pyimport fk_package.print_shape#导入fk_package包下的billling模块#实际上就是导入fk_package目录下的billing.pyfrom fk_package import billing#导入fk_package包下的arithmetic_chart模块#实际上就是导入fk_package目录下的arithmetic_chart.pyimport fk_package.arithmetic_chartfk_package.print_shape.print_blank_tringle(5)imbilling.Item(4)print(im)fk_package.arithmetic_chart.print_multipe_chart(5) 上面程序虽然可以正常运行但此时存在两个问题 为了调用包内模块中的程序单元需要使用很长的前缀这实在是太麻烦了。包内__init__.py文件的功能完全被忽略了。 将fk_package包下的__init__.py文件编辑成如下形式 #从当前包中导入print_shape模块from fk_package import print_shape#从.print_shape中导入所有程序单元到fk_package中from fk_package.print_shape import*#从当前包中导入billing模块from fk_package import billing#从.billing中导入所有程序单元到fk_package中from fk_package.billing import*#从当前包中导入arithmetic_chart模块from fk_package import arithmetic_chart#从.arithmetic_chart中导入所有程序单元到fk_package中from fk_package.arithmetic_chart import * 在其他的源文件中执行如下代码 #导入fk_package包实际上导入包下的__init__.py文件import fk_package#直接使用fk_package前缀即可调用它所包含的模块内的程序单元fk_package.print_blank_tringle(5)imfk_package.Item(4)print(im)fk_package.print_multipe_chart(5)** **   **     **********Item[price4]1 * 1   1  1 * 2   2  2 * 2   4  1 * 3   3  2 * 3   6  3 * 3   9  1 * 4   4  2 * 4   8  3 * 4 12  4 * 4 16  1 * 5   5  2 * 5 10  3 * 5 15  4 * 5 20  5 * 5 25  9.3查看模块内容 在导入模块之后开发者往往需要了解模块包含哪些功能还希望能查看模块中各成员的帮助信息。 9.3.1 模块包含什么 为了查看包含什么可以通过如下两种方式 使用dir()函数。使用模块本身提供的__all__变量。 dir()哈桑农户可用于返回模块或类所包含的全部程序单元包括变量、函数和方法等但直接使用dir()函数默认会列出模块内所有的程序单元包括以下划线开头的程序单元而这些以下划线开头的程序单元其实并不希望被外界使用。 比如在Python的交互解释器中执行如下命令来导入string模块Python内置的用于丰富字符串功能 dir(string)[Formatter, Template, _ChainMap, __all__, __builtins__, __cached__, __doc__, __file__, __loader__, __name__, __package__, __spec__, _re, _sentinel_dict, _string, ascii_letters, ascii_lowercase, ascii_uppercase, capwords, digits, hexdigits, octdigits, printable, punctuation, whitespace] 很明显该模块内有大量以下划线开头的程序单元其实这些程序单元并不希望被其他程序使用因此这写程序单元意义不大。 为了过滤这些以下划线开头的程序单元可以使用如下列表推导式来列出模块中的程序单元。 [e for e in dir(string) if not e.startswith(__)][Formatter, Template, _ChainMap, _re, _sentinel_dict, _string, ascii_letters, ascii_lowercase, ascii_uppercase, capwords, digits, hexdigits, octdigits, printable, punctuation, whitespace] 此外前面还介绍了模块中的__all__变量该变量相当于该模块开放的功能接口因此也可通过该模块的__all__变量来查看模块内的程序单元。 string.__all__[ascii_letters, ascii_lowercase, ascii_uppercase, capwords, digits, hexdigits, octdigits, printable, punctuation, whitespace, Formatter, Template] 对比前面列表推导式列出的结果和此处列出的变量完全相同。 注意并不是所有的模块都会通过__all__变量的有些模块不提供在这种情况下只能使用列表推导式来查看模块中的程序单元。 9.3.2 使用__doc__属性查看文档 前面介绍使用help()函数来查看程序单元的帮助信息 help(string.capwords)Help on function capwords in module string:capwords(s, sepNone)capwords(s [,sep]) - stringSplit the argument into words using split, capitalize eachword using capitalize, and join the capitalized words usingjoin.  If the optional second argument sep is absent or None,runs of whitespace characters are replaced by a single spaceand leading and trailing whitespace are removed, otherwisesep is used to split and join the words. 通过上面描述可以看出capwords()函数的作用就是将给定的s字符串中的每个单词首字母变成大写的。该函数可通过sep参数指定分隔符如果不指定sep参数该字符串默认以空白作为分隔符。 string.capwords(abc xyz)Abc Xyzstring.capwords(abc;xyz,sep;)Abc;Xyz 需要说明的是使用help()函数之所以能查看程序单元的帮助信息其实完全是因为该程序单元本身有文档信息也就是__doc__属性。换句话说使用help()函数查看的其实就是程序单元的__doc__属性值。 print(string.capwords.__doc__)capwords(s [,sep]) - stringSplit the argument into words using split, capitalize eachword using capitalize, and join the capitalized words usingjoin.  If the optional second argument sep is absent or None,runs of whitespace characters are replaced by a single spaceand leading and trailing whitespace are removed, otherwisesep is used to split and join the words. help()函数就是输出程序单元的__doc__属性值。 9.3.3 使用__file__属性查看模块的源文件路径 除可以查看模块的帮助信息之外还可以直接阅读模块的源代码功能提升Python编程能力。 提示不管学习什么语言认真阅读哪些优秀的框架、库的源代码都是非常好的学习方法。 通过模块的__file__属性即可查看指定模块的源文件路径。 string.__file__D:\\python\\Lib\\string.py 这说明string模块对应的文件就是保存在D:\\python\\Lib\\string.py文件开发者完全可以直接打开该文件来查看该模块的全部源代码。 需要说明的是并不是所有模块都是使用Python语言编写的有些与底层交互的模块可能是用C语言编写而且是C程序编译之后的结果所有这种模块可能没有__file__属性。
http://www.pierceye.com/news/147492/

相关文章:

  • 有没有什么推荐的网站用 php网站建设打出一首古诗
  • 品牌网站建设浩森宇特wordpress 首页 缩略图
  • 一个主机可以做几个网站域名织梦cms网站更新
  • 知名网站有哪些网站开发是什么环境
  • 哪些网站是用wordpress开发一款视频app多少钱
  • 济南网站定制制作建设项目 环评申报网站
  • 无锡响应式网站设计wordpress站群管理系统
  • 主题网站策划设计书网络营销是什么的一项活动
  • python+网站开发实例教程免费做视频网站
  • 免费建站自己的网址美化网站公司
  • 做购物网站哪个cms好用网络规划与设计就业前景
  • wordpress仿站工具网站建设jw100
  • 网站推广过程叙述关键词歌词
  • vip影视网站如何做appwordpress centos查看目录
  • 网站怎么套模板山西seo博客
  • 好看的手机网站推荐新建的网站 找不到
  • 网站站内搜索怎么做seo搜索优化
  • 建设部网站 测绘规章pc网站手机网站
  • 建网站如何赚钱vs哪个版本做网站好
  • 新衡阳网站游戏软件开发公司简介
  • 湖南基础建设投资集团网站做体育最好的网站
  • 上海php网站开发公司wordpress 邮件认证
  • 教做香肠的网站张家港专业网站建设
  • 园林建设网站营销型网站的建站步骤是什么意思
  • 招聘求职网站html模板正规的创业商机网
  • 预付网站建设费会计处理哪里建网站好
  • 做免费网站艺术学院网站建设管理办法
  • 做网站贵吗手机网站wap
  • linux建立网站做网站的应该怎么发广告
  • wordpress使用端口百度seo排名软