python第一章

Hello World,详解python基础语法

Posted by QQL on October 1, 2018

Hey,欢迎来到python基础语法

1.编程语言介绍:

  • 机器语言
     用二进制代码0和1描述的指令称为机器指令
  • 汇编语言
     汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆
  • 高级语言
     1.编译型语言:C、C++、Delphi等
      执行速度快,在应用源程序执行之前,就将程序源代码“翻译”成目标代码,即机器语言,所以不依赖语言环境运行,但是应用程序一旦修改,必须修改源码,再重新编译生成新的目标文件才能执行,所以只有目标文件(机器语言的代码)而没有源代码,修改不方便,依赖编译器,跨平台差
     2.解释型语言
      应用程序源代码一边由相应语言的解释器“翻译”成目标代码(机器语言),一边执行,因此效率比较低。应用程序不能脱离其解释器
      跨平台好,一份代码,到处使用,缺点是执行速度慢,依赖解释器运行
     对比:

    2.Python解释器种类以及特点

  • CPython
     这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。
  • IPython
     IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。
  • CPython
     用»>作为提示符,而IPython用In [序号]:作为提示符。
  • PyPy
     PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。
  • Jython
     Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行
  • IronPython
     IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。

    3.位和字节的关系?

     1个字节 = 8位(二进制位)===》1Byte = 8Bit
     CPU位数表示CPU一次处理的最大位数,32为系统最多处理32位数据
     int = 4字节
     char = 1字节
     bit 位,计算机中最小的表示单位
     8bit = 1bytes 字节,最小的存储单位,1bytes缩写为1B
     1KB=1024B
     1MB=1024KB
     1GB=1024MB
     1TB=1024GB
     1PB=1024TB
     1EB=1024PB
     1ZB=1024EB
     1YB=1024ZB
     1BB=1024YB

    4.PEP8 Python 编码规范:https://www.jianshu.com/p/52f4416c267d

    5.单引号/双引号/多引号区别:

     单引号和双引号没有区别,
     多引号作用就是多行字符串必须用多引号

    6.注释

     单行#
     多行””””””
     内置方法__doc__输出函数注释

    def a():
    '''这是文档字符串'''
    pass
    print(a.__doc__)
    

    7.进制转换

    十进制转换为x进制

    二进制:bin(十进制)
    八进制 **:oct(十进制)
    十六进制**:hex(十进制)

    x进制转换为十进制

     使用 int() 函数 ,第一个参数是字符串 ‘0Xff’ ,第二个参数是说明这个字符串是几进制的数。 转化的结果是一个十进制数。
    十六进制转十进制:int(‘0xf’,16)
    八进制转十进制:int(‘17’,8)
    二进制转十进制:int(‘10100111110’,2)
    总结:其实可以看到,不管 几进制数 转换成 十进制数 ,都是用 int() 函数 。之后后面的 第二个参数 写清楚 前面字符串 是 几进制数就可以 。注意一定要合法。 比如2进制数就不能出现2这样的字符。
    遗漏: 二进制,八进制,十六进制,全是str 类型,而十进制为 Int 类型

    8.IP网段

     企业规模越来越大,从原来的十几台,到几十台,几百台。那么所需的IP地址数量也越来越多。我们都知道C类一个网段的IP地址数为0-255,除去0和255,只能有254台电脑,如果超过254台电脑,就需要增加IP地址,如何增加IP地址呢,为此就需要子网掩码。
     IPv4的地址由四段数字组成(以后将扩充更改),常分为三类IP:
     A类:0.0.0.0到127.255.255.255
     B类:128.0.0.0到191.255.255.255
     C类:192.0.0.0到223.255.255.255

    9.python逻辑运算符’and’/’or’/’not’

     1.‘and’、‘or’和‘not’的优先级是not>and>or
     2.逻辑操作符and 和or 也称作短路操作符(short-circuitlogic)或者惰性求值(lazy evaluation):从左向右解析,一旦结果可以确定就停止
     and:运算符必须所有的运算数都是true才会把所有的运算数都解析,并且返回最后一个变量
     or:即只要有一个是true,即停止解析运算数,返回最近为true的变量,即 3 or 4,值为3;改变顺序4 or 3 即为4
     *总结:
     对于and,如果没有假值,返回的是最后一个真值,如果有假值,则返回的是第一个假值。
     对于or,如果没有真值,返回的是最后一个假值,如果有真值,则返回的是第一个真值。

    10.python独有语法:while。。。。else。。。

     当while 循环正常执行完,中间没有被break 中止的话,就会执行else后面的语句

    11. id()函数用于获取对象内存地址。

    12. is/is not

     x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False
     x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。

    13.深浅拷贝copy:https://zhuanlan.zhihu.com/p/25221086

     浅拷贝仅仅复制了容器中元素的地址(原变量中元素经过改变,拷贝变量中的不变类型不会改变,可变类型同步改变)
     浅拷贝是在另一块地址中创建一个新的变量或容器,但是容器内的元素的地址均是源对象的元素的地址的拷贝。也就是说新的容器中指向了旧的元素( 新瓶装旧酒 )。
     深拷贝,完全拷贝了一个副本,容器内部元素地址都不一样
     深拷贝是在另一块地址中创建一个新的变量或容器,同时容器内的元素的地址也是新开辟的,仅仅是值相同而已,是完全的副本。也就是说( 新瓶装新酒 )。

    14.执行python脚本的方法:

     1.通过命令: python ./hello.py
     2.在linux/unix系统中,在脚本顶部添加以下命令让Python脚本可以像SHELL脚本一样可直接执行:
    #! /usr/bin/env python3
     然后修改脚本权限,使其有执行权限,命令如下:
    $ chmod +x hello.py 执行以下命令: ./hello.py
     3.在IDEL中运行
     判断题:
     现有如下两个变量,请简述 n1 和 n2 是什么关系?
     n1 = 123456
     n2 = n1
     » n1 is n2 »True
     n1为一个地址,n2为一个地址,n1指向123456,n2 = n1时,n2也指向123456
     此优化方案只针对短字符和数字[-5,257),超过这个就要开辟新的内存空间进行存储

    15.常用编码介绍

    16.python Number数字函数

     abs(x):返回数字的绝对值,如abs(-10) 返回 10
     round(x [,n]):返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。如round(80.264, 2) : 80.26
    import math
     ceil(x):函数返回一个大于或等于 x 的的最小整数,如math.ceil(4.1) 返回 5
     floor(x):返回数字的下舍整数,如math.floor(4.9)返回 4
     modf(x):返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。如math.modf(100.72) : (0.7199999999999989, 100.0)
     sqrt(x):返回数字x的平方根。如math.sqrt(100) : 10.0
     数学常量
     pi 数学常量 pi(圆周率,一般以π来表示)
     e 数学常量 e,e即自然常数(自然常数)。

    17.字符串常用方法:

     01.[ x: y: z]切片,从x切到y,每间隔z取一次值
     02.
     repalce:s.replace(‘h’,’H’)替换
     str.capitalize()首字母大写
     decode() 方法以指定的编码格式解码 bytes 对象。默认编码为 ‘utf-8’。
     encode() 方法以指定的编码格式编码字符串
     str.isdigit()检测字符串是否只由数字组成。
     str.join(sequence)将序列中的元素以指定的字符连接生成一个新的字符串。隐含作用:把序列(列表/元组)转换成字符串
     str.lower()权转换为小写
     startswith(substr, beg=0,end=len(string))检查字符串是否以指定子字符串 substr 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。
     strip()/lstrip()/rstrip()用于移除字符串头尾指定的字符(默认是清除两边的空白符,例如:/n, /r, /t, ‘ ‘)或字符序列。注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。
     swapcase()将字符串中大写转换为小写,小写转换为大写

    18.列表:http://www.runoob.com/python3/python3-list.html

    19.元组:

     Python 的元组与列表类似,有序,可以通过索引取元素,不同之处在于元组的元素不能修改。
     元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用
     内置函数:
     len()
     max()
     min()
     tuple()将列表转换成元组
     元组不能修改元素,但能够通过‘+’连接元组
     元组不能删除元素,但能通过‘del’删除元组

    20.可变类型与不可变类型:

     可变:list/dict/set,能够通过索引进行值的修改
     不可变:数字类(bool/int/float/complex)、字符串str、元组tuple、frozenset。能通过索引获得值,但不能进行修改,修改后id()内存地址发生改变
     可变的数据类型是不可以被hash(返回一个固定长度的值)的

    21.字典:http://www.runoob.com/python3/python3-dictionary.html

     01.

    22.集合set:http://www.runoob.com/python3/python3-set.html

     集合(set)是一个无序的不重复元素序列,且元素必须可hash(不可变类型)

     作用:用来去重a = set(‘abracadabra’) »{‘a’, ‘r’, ‘b’, ‘c’, ‘d’}