欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python基础定义

程序员文章站 2022-07-07 09:04:36
CPython: 安装Python后,官方提供了一个Python解释器CPython,是通过C语言写的,在命令行下运行Python就是启动Cpython解释器,运用最广泛的一个。 Ipython: 基于Cpython之上的一个解释器,跟Cpython差不多,只不过在交互式上有所增强; Jpython ......
  1. Python的解释器种类: 
  • CPython:

    安装Python后,官方提供了一个Python解释器CPython,是通过C语言写的,在命令行下运行Python就是启动Cpython解释器,运用最广泛的一个。

  • Ipython:

         基于Cpython之上的一个解释器,跟Cpython差不多,只不过在交互式上有所增强;

  • Jpython:

    用Java语言写的一个python解释器,可以直接将python编译成Java字节码运行;

  • PyPy:

    它的目标是使python代码执行速度快,使用JIT技术实现的,对python动态编译,

  • ironPython

    运行在微软的.net平台上

  2.Pythong变量:

      Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。

    Python中的,全部大写的变量名代表常量

  3.python数据类型:  

  • 布尔值:   (ture|false)
  • 数字:

    整型(int):

       在32位机器上,整数的位数为32位,即:-2**31~~2**31-1,即:-2147483648——2147483647

      在64位机器上,整数的位数为64位,即:-2**63~~2**63-1,即:-2147483648——2147483647

              长整型(long):

                python中没有指定位宽,理论上可以无限大,但受限于内存;但是到python3中没有long了,全部都是正型了。

  • 浮点型(float):

    是有理数的一个特定子集的集合,Python中精度默认只能是17位精度,所有的语言都是这样的,跟浮点数的存储结构有关系

    Python中的工具箱,有个decimal模块,getcontext(),其中prec定义的是精度,默认是28,改之可以调。  

Python基础定义
 1 >>>from decimal import getcontext
 2 >>> from decimal import Decimal
 3 >>>getcontext()
 4 Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999999, Emax=999999999, capitals=1, flags=[], traps=[DivisionByZero, Overflow, InvalidOperation])
 5 >>> b = Decimal(1)/Decimal(3)
 6 >>> b
 7 Decimal('0.3333333333333333333333333333')  ///28个精度值
 8 >>> getcontext().prec = 50
 9 >>> b = Decimal(1)/Decimal(3)
10 >>> b
11 Decimal('0.33333333333333333333333333333333333333333333333333')   ////50个精度值。
decimal模块--扩大浮点数精度

 

  • 字符串

    在python中,加了引号的字符都被认为字符串,多行用多引号(''' '''),注意字符串的拼接只能是双方都是字符串,不能跨数据类型;

  • 列表

    列表是数据的集合,可以存任何数据,可以增删改查:

         

>>> name = []    
>>> name
[]
>>> name = list()
>>> name
[]              ////定义空列表的两个方法;
>>> name = ['ming','long','mng','ting','jun','fei','xiang','fei','alex'] //创建列表  
>>> name[0]
'ming'
>>> name[3]
'ting'
>>> name[4]
'jun'           ////以上是查询列表里的值,其中0、3、4是列表里数据的索引,从0开始;
>>> name.index('ming')
0
>>> name.index('fei') 
5               ////查询列表里的数据位于列表哪个索引位置;

>>> name.count('ming')
1
>>> name.count('fei')
2              ////count() 是查询列表里某个数据重复了多少次;
>>> name.append('xiangmin')
>>> name
['ming', 'long', 'mng', 'ting', 'jun', 'fei', 'xiang', 'fei', 'alex', 'xiangmin']  ////append()在列表最后边附加数据;

>>> name.insert(0,'qing')     
>>> name
['qing', 'ming', 'long', 'mng', 'ting', 'jun', 'fei', 'xiang', 'fei', 'alex', 'xiangmin']
>>> name.insert(-1,'wu')
>>> name
['qing', 'ming', 'long', 'mng', 'ting', 'jun', 'fei', 'xiang', 'fei', 'alex', 'wu', 'xiangmin']     ////insert()向索引的前面添加值    

>>> name.pop(0)    
'qing'
>>> name
['ming',  'long', 'mng', 'ting', 'jun', 'fei', 'xiang', 'fei', 'alex', 'wu', 'xiangmin']      ////pop() 删除指定索引处的数据

>>> name.remove('tong')
>>> name
['ming', 'mng', 'ting', 'jun', 'fei', 'xiang', 'fei', 'alex', 'wu', 'xiangmin']
    /////reomve()删除指定的数据;

>>> name
['mng', 'ting', 'tong', 'wu', 'wu', 'xiang', 'xiangmin', ['JOHN', 'JAckson', 'a'], 'kun', 'fei', 'fei', 'alex']
>>> del name[2]   
>>> name
['mng', 'ting', 'wu', 'wu', 'xiang', 'xiangmin', ['JOHN', 'JAckson', 'a'], 'kun', 'fei', 'fei', 'alex']
>>> del name
>>> name
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'name' is not defined    ////del是全局删的,可以删列表里的值,也可以删列表;

>>> name
['alex', 'fei', 'fei', 'kun', ['JOHN', 'JAckson'], 'mng', 'ting', 'tong', 'wu', 'wu', 'xiang', 'xiangmin']
>>> name.reverse()
>>> name
['xiangmin', 'xiang', 'wu', 'wu', 'tong', 'ting', 'mng', ['JOHN', 'JAckson'], 'kun', 'fei', 'fei', 'alex']    ////reverse() 反转,sort()排序;

>>> name
['ming', 'ting', 'wu', 'wu', 'xiang', 'xiangmin', ['JOHN', 'JAckson'], 'kun', 'fei', 'fei', 'alex']
>>> name2 = name.copy()
>>> name2
['ming', 'ting', 'wu', 'wu', 'xiang', 'xiangmin', ['JOHN', 'JAckson'], 'kun', 'fei', 'fei', 'alex']     ////copy()  拷贝列表内容

>>> name[0] = 'hong'
>>> name[6][0] = 'john'
>>> name
['hong', 'ting', 'wu', 'wu', 'xiang', 'xiangmin', ['john', 'JAckson'], 'kun', 'fei', 'fei', 'alex']
>>> name2
['ming', 'ting', 'wu', 'wu', 'xiang', 'xiangmin', ['john', 'JAckson'], 'kun', 'fei', 'fei', 'alex']     ////我们会奇怪发现,name2是name1的复制品,当name的索引为0处和嵌套的列表都有变化,为何name2的嵌套列表也会变化呢??不应该都不变吗?这是因为copy()只是浅浅copy,它只copy列表第一层的数据,至于嵌套的列表它复制的不是数据,是嵌套列表的内存地址空间,或者是一个内存指针;所以,当name嵌套列表数据变化时,name2里的找的是这个嵌套列表内存空间的值,所以name2的值也会发生变化。