准备发布:
1.首先为模块创建一个文件夹;
创建好之后,将nester.py模块文件复制到这个文件夹中。简单起见,文件夹命名为nester;
2.在创建好的文件夹中创建一个名为setup.py的文件;
这个文件包含有关发布的元数据。编辑这个文件,增加下面的代码:
from distutils.core import setup # 从python发布工具导入“setup”函数
setup(
# setup函数的参数名
name = 'nester',
version = '1.0.0',
py_modules = ['nester'] # 将模块的元数据与setup函数的参数关联
author = 'abc' # 自定义模块使用的值
author_email = 'zzz@qwe.net', # 自定义模块使用的值
url = 'http://wwwabc.net', # 自定义模块使用的值
description = 'A test for ', # 自定义模块使用的值
)
构建发布:
3.构建一个发布文件;
发布工具包含有构建一个发布所需的所有功能。在nester文件夹中打开一个终端窗口,键入一行命令:python setup.py sdist
4.将发布安装到你的Python本地副本中;
仍然在终端窗口,键入命令:sudo python setup.py install
发布速览
利用Python的发布工具,你的模块已经转换为一个发布,并且安装在你的Python本地副本上。
开始时只有一个函数,这个函数输入到一个名为nester.py的文件中,这就创建了一个模块。然后创建一个名为nester的文件夹存放这个模块。通过在这个文件夹中增加一个名为setup.py的文件,从而能够构建和安装你的发布,这会生成一组额外的文件,并在nester文件夹中出现两个新的文件夹。这些文件和文件夹都是由发布工具为你创建的。
python是动态语言,而静态语言是?
静态语言(强类型语言)
静态语言是在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型。例如:C++、Java、Delphi、C#等。
动态语言(弱类型语言)
动态语言是在运行时确定数据类型的语言。变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。例如PHP/ASP/Ruby/Python/Perl/ABAP/SQL/JavaScript/Unix Shell等等。
.pyc文件,字节码。
pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码,是由Python的虚拟机来执行的,这个是类似于Java或者.NET的虚拟机的概念。pyc的内容,是跟python的版本相关的,不同版本编译后的pyc文件是不同的,2.5编译的pyc文件,2.4版本的python是无法执行的。
导入模块并使用
既然已经构建了模块,并作为发布打包和安装,下面来看使用时还需要什么。要使用一个模块,只需要把它导入到你的程序中,或者导入到交互式shell:
import nester # import是python关键字,nester是模块名
Python的模块实现命名空间
Python中的所有代码都与一个命名空间关联。
主Python程序中的代码与一个名为__main__的命名空间关联。将代码放在其单独的模块中时,Python会自动创建一个与模块同名的命名空间。所有,你的模块中的代码会与一个名为nester的命名空间关联。
假设你目前正在某个命名空间,如果想指示另外一个模块命名空间中的某个函数,就需要用该模块的命名空间对这个函数的调用作出限制。
所有,不能简单的通过print_lol(cast)调用这个函数,而需要限定为nester.print_lol(cast),这样一来,Python解释器就会知道去那里找这个函数。命名空间限定的格式如下:首先是模块名,然后是一个点,再后面是函数名,如nester.print_lol(cast)。
采用from nester import 函数名,可以直接引用函数,但是不建议这样做,因为可能本命名空间存在同名函数,会覆盖本命名空间的属性。
Pypi社区上传?
Python包索引(PyPI)是Python编程语言的软件存储库。
PyPI(Python Package Index)是python官方的第三方库的仓库,所有人都可以下载第三方库或上传自己开发的库到PyPI。PyPI推荐使用pip包管理器来下载第三方库。 pip可正常工作在Windows、Mac OS、Unix/Linux等操作系统上,但是需要至少2.6+和3.2+的CPython或PyPy的支持。python 2.7.9 和3.4以后的版本已经内置累pip程序,所以不需要安装。
s = "abc汉字"
len(s) # 5
type(b"abc") # bytes
type(u'abc') # str
str(2.2) #str
"学习{0},还要学习{1}".format('C语言','Python')
s = "a,b,c"
l = s.split(',') # l = ['a','b','c']
ll = ','.join(l) # ll = 'a,b,c'
s.find('a') #0
s.find('b') #2
l.sort.__doc__ # 'L.sort(key=None,reverse=False)
x = ['abc','a','bc','abcd']
x.sort(key=len) # x = ['a','bc','abc','abcd']
num = '1', # num = ('1',)
num = ('1',) # num = ('1',)
type(num) # tuple
num = ('1') # num = '1'
type(num) # str
num = '1','2','3' # num = ('1','2','3')
num = ('1','2','3') # num = ('1','2','3')
a,b,c = num # a = '1', b = '2', c = '3'
l = list(num) # l = ['1','2','3'], num = ('1','2','3')
ll = tuple(l) # ll = ('1','2','3')
想要元素不可变,用元组。
|