pyton语言的几个显著特点
概述
本文分析python下面几个显蓍特点
1. python基本特点及运行问题
2. python开发工具包
3. 代码块问题
4. 方法重载问题
5. 继承与多态问题
6. package-from-import-main函数问题
一、pyton基本特点及运行问题
- 是脚本文件,.py文件
脚本文件就是一边解释,一边运行的文件
所以运行起来,可以与sql脚本相似,选中一部分运行,也可以整体运行
spyder3环境,选中一部分运行,即ctlr+enter
pycharm,alt+shift+e
- 也可以直接命令行运行
>>>a=[12,45,56]
>>>print(a)
[12,45,56]
>>>
命令行可以运行任何内容,直接运行xxx.py文件 - xxx.py也可以编绎后运行
xxx.py–>xxx.pyc,或xxxx.pyo等
xxx.py是源程序文件,是文本文件
xxx.pyc,或xxx.pyo是二进制文件
.pyc,.pyo是python2的后缀,python3发生了改变 - xxx.py源文件是跨平台文件,可以不修改一个字代码运行在
window环境(win10/win7/xp)
linux环境
mac苹果操作系统环境
二、pyton开发工具包
有时需要引用外部开发工具包,pyhon提供了自动集成环境,类似java的maven或gradle工具。
这里有一个问题,就是下载国外工具包时,网不通,或网速慢,解决办法是采用国内镜像。有下面几个国内镜像
清华:https://pypi.tuna.tsinghua.edu.cn/simple
阿里云:http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
华中理工大学:http://pypi.hustunique.com/
山东理工大学:http://pypi.sdutlinux.org/
豆瓣:http://pypi.douban.com/simple/
镜像文件配置如下(win10,其他没有测试过)
c:\users\自己的用户名\pip\pip.ini
[global]
index-url=http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
一次只能加载一个镜像地址
安装一个不存在外部包方法是
pip install 包名称
例如
pip install pyqt5
pip install lxml
。。。
如果外部安装包己下载到本地,则下面方法安装
pip install 某某外部包.whl
后缀为.whl
三、代码块问题
python语言没有{},或begin…end,而是采用代码块对齐,如果对齐有错,则就类似javascript/java语言的{}放置的位置有错
python称为pep8规则
这一点上是与其他所有语言最大的不同点,依据排版对齐,决定代码块, 也许也在一类中,也许在一个函数中,也许在一段控制语句中,也许下一行代码就是另一个函数等。
四、方法重载问题
重载是方法名称相同,参数类型,或个数不相同,
在java/C++中都有方法重载,在python/javascript中,没有方法重载,
python的类可以写多个构造函数,只有最后一个构造函数才有用,
这里最大的问题时,写多个重名方法,编绎时不出现语法错误。
五、继承与多态问题
python变量属于弱类型变量,或无类型变量,有下面特点
同一个变量,可以是任何数据类型,不赋值时,无数据类型,只有在赋值后,才产生数据类型,这一点与java/C++完全不同,后者在定义时,产生数据数据类型,以后一直不能改变,泛型例外。
python有继承,也有多态,他的多态不是java/C++的多态,或python不是严格意义上的多态,示例分析如下
import abc
class A(metaclass=abc.ABCMeta):
@abc.abstractmethod
def add(self,a,b):
pass
class B(A):
def add(self,a,b):
print("class-B add,n=",a,b)
return a+b+1
class C(A):
def add(self,a,b):
print("class-C add,n=",a,b)
return a+b+10
class D():#没有继承A,所以下面add(...)方法,不是类A的多态
def add(self,a,b):
print("class-D add,n=",a,b)
return a+b+100
def add(obj):
n=obj.add(2,3)
print("add,n=",n)
return n;
o1=B();
a=add(o1) #是标准意义上的多态,类A的add方法多态的第1个态
print('a=',a)
'''
上面输出是
class-B add,n= 2 3
add,n= 6
a= 6
'''
o2=C();
b=add(o2) #是标准意义上的多态,类A的add方法多态的第2个态
print('b=',b)
'''
上面输出是
class-C add,n= 2 3
add,n= 15
b= 15
'''
o3=D();
c=add(o3) #不是标准意义上的多态,不类A的add方法多态
print('c=',c)
'''
上面输出是
class-D add,n= 2 3
add,n= 105
c= 105
'''
六、 package-from-import-main函数问题
- 对比下java文件的结构
1>. 一个类文件首先声明我在哪里,即package,所在的相对目录
2>. 然后声明我需要什么资源,即import操作
3>. 再对他人说,我叫什么名字,即类名称
4> 在类中告诉他人我有什么,即属性
5>. 最后在类中告诉他人我能做什么,即方法
6>. 任何一个类都有一个标准的静态main函数,即运行入口
- python没有java的package,但有类似的东东
每个目录下有一个init.py文件,文件内容可以是空的 - python的任何一个文件,即一个module,模块,可供其他文件import操作
- 简单import moduleA
则可以引用moudelA中的类与函数,但不能直接用,需要加前缀moduleA,例如
moduleA中有方法add(a,b),及类A,则import用法是
- python没有java的package,但有类似的东东
moduleA1.py,文件内容如下
def add(a,b):
...
class A:
....
moudleB1.py
import moudelA1
n=moduleA1.add(2,3)
o=moduleA.A()
```
3. 前面import 操作也可以改为from moduelA import *
则代码简化为
<div class="se-preview-section-delimiter"></div>
moudleB1.py,文件内容如下
from moudelA1 import *
#n=moduleA1.add(2,3), #不能再用moudelA1,代码有错
n=add(2,3) #代码OK
#o=moduleA.A() #有错
o=A() #OK
“`
created by 刘明

moudleB1.py,文件内容如下
from moudelA1 import *
#n=moduleA1.add(2,3), #不能再用moudelA1,代码有错
n=add(2,3) #代码OK
#o=moduleA.A() #有错
o=A() #OK
- python的main函数
python语言是脚本语言,没有main函数,是从头到尾自动运行,可以模拟一个main函数,这一点与javascript语言完全相同,示例如下
def fun1():
print('我是fun1。。。函数')
def fun2():
print('我是fun2。。。函数')
def fun3():
print('我是fun1。。。函数')
if name==’main‘: #模拟一个main函数运行
fun1() #当然可以是其他任何一个函数
created by 刘明

本文详细探讨了Python的显著特点,包括它的脚本性质、运行方式、开发工具包、代码块对齐(PEP8)、方法重载、继承与多态以及package-import机制。Python的独特之处如代码块通过对齐确定、无需显式main函数等被重点阐述,同时提到了在不同环境下运行的跨平台特性以及解决国外工具包下载问题的国内镜像方案。

470

被折叠的 条评论
为什么被折叠?



