python语言的几个显著特点

pyton语言的几个显著特点

概述

     本文分析python下面几个显蓍特点
  
1. python基本特点及运行问题
2. python开发工具包
3. 代码块问题
4. 方法重载问题
5. 继承与多态问题
6. package-from-import-main函数问题

一、pyton基本特点及运行问题

  1. 是脚本文件,.py文件
     脚本文件就是一边解释,一边运行的文件
     所以运行起来,可以与sql脚本相似,选中一部分运行,也可以整体运行
     spyder3环境,选中一部分运行,即ctlr+enter
     pycharm,alt+shift+e
     
  2. 也可以直接命令行运行
    >>>a=[12,45,56]
    >>>print(a)
    [12,45,56]
    >>>
      命令行可以运行任何内容,直接运行xxx.py文件
  3. xxx.py也可以编绎后运行
     xxx.py–>xxx.pyc,或xxxx.pyo等
     xxx.py是源程序文件,是文本文件
     xxx.pyc,或xxx.pyo是二进制文件
     .pyc,.pyo是python2的后缀,python3发生了改变
  4. 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函数问题

  1. 对比下java文件的结构
    1>. 一个类文件首先声明我在哪里,即package,所在的相对目录
    2>. 然后声明我需要什么资源,即import操作
    3>. 再对他人说,我叫什么名字,即类名称
    4> 在类中告诉他人我有什么,即属性
    5>. 最后在类中告诉他人我能做什么,即方法
    6>. 任何一个类都有一个标准的静态main函数,即运行入口
    1. python没有java的package,但有类似的东东
      每个目录下有一个init.py文件,文件内容可以是空的
    2. python的任何一个文件,即一个module,模块,可供其他文件import操作
    3. 简单import moduleA
        则可以引用moudelA中的类与函数,但不能直接用,需要加前缀moduleA,例如
        moduleA中有方法add(a,b),及类A,则import用法是
    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 *
    则代码简化为




moudleB1.py,文件内容如下
from moudelA1 import *

#n=moduleA1.add(2,3), #不能再用moudelA1,代码有错
n=add(2,3) #代码OK
#o=moduleA.A() #有错
o=A()   #OK

“`

created by 刘明

python语言的几个显著特点_第1张图片


  moudleB1.py,文件内容如下
  from moudelA1 import *

    #n=moduleA1.add(2,3), #不能再用moudelA1,代码有错
    n=add(2,3) #代码OK
    #o=moduleA.A() #有错
    o=A()   #OK
  1. 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语言的几个显著特点_第2张图片

你可能感兴趣的:(语言特点,python)