zoukankan      html  css  js  c++  java
  • Pytho知识总结2

    输入输出语句

    1. python语法

    >>> x = 10

    >>> if x > 5:

    ... print("I'm jack")

    ...

    I'm jack

    Python不是靠括号决定语法是否结束,而是靠缩进判断程序是否结束。Python语言在语法习惯上有些变化:

    1. 括号是可选的,但一般不加括号
    2. 冒号代表符合语句

      Python中所有的符合语句,首行以冒号结尾,下一行的嵌套按照缩进格式书写,缩进代表代码块结束,不用使用大括号代表程序结束。

    3. 用分号表示语句终止
    4. Python需要严格执行语法缩进,通过语法缩进判断程序的逻辑结构
    1. 接收用户输入

      1。、接收用户输入

      >>> info = input('please input you name: ')

      在python3中使用input函数接收用户输入,而在python2.6以前的版本使用raw_input接收用户输入

    2、判断用户输入的数据是否为纯数字

    ①字符串对象的isdigit方法

    字符串对象的isdigit方法用于检测字符串是否为纯数字,如果是纯数字返回值为真,否则返回值为假

    >>> name = 'jack'

    >>> age = '20'

    >>> name.isdigit() #调用字符串的isdigit方法测试

    False

    >>> age.isdigit()

    True

    ②四则运算器

    ③用try测试是否为数字

    try测试更加简洁,格式:

    try:

    测试语句

    expect:

    测试失败之后的执行语句

    else:

    测试成功之后的执行的组合语句

    注意:else语句是try的组合语句

    1. print打印函数

      在python3.x中,print是一个内置函数,用关键字参数来表示特定模式

      在python2.x中,print是语句,拥有自己的特定语法

      1. print函数的使用

    >>> name = 'jack'

    >>> age = 18

    >>> sex = M

    >>> print(name,age,sex)

    ('jack', 18, 'M')

    可以使用sep参数,在打印的灭个对象文本之间插入一个字符串。如果没有指定sep,默认使用空格分开打印的对象文本。

    >>> print(name,age,sex,sep=":") #使用:作为分隔符

    jack:18:M

    >>> print(name,age,sex,sep="") #不使用分隔符

    jack18M

    使用end参数,在打印的对象文本之后加入一个字符串。默认使用换行符。

    >>> print(name,age,sex);print(name,age,sex)

    jack 18 M

    jack 18 M

    >>> print(name,age,sex,end="");print(name,age,sex) #使用end参数,让输出不换行

    jack 18 Mjack 18 M

    >>> print(name,age,sex,end="->");print(name,age,sex)#使用end参数,在输出内容后面输出其他内容

    jack 18 M->jack 18 M

    sep参数和end参数可以结合使用

    >>> print(name,age,sex,sep=":",end="-> ")

    jack:18:M->

    也可以使用file参数,把print内容直接输出到指定文件中

    >>> print(name,age,sex,sep=":",file=open('test.txt','w'))

    1. 字符串格式化输出
    2. 字符串格式化转换类型

    格式

    描述

    %c

    字符及其ASCII码

    %s

    字符串(使用str转换任意python对象)

    %r

    字符串(使用repr转换任意python对象)

    %d(%i)

    有符号整数(十进制)

    %u

    无符号整数(十进制)

    %x

    无符号整数(十六进制)

    %X

    无符号整数(十六进制大写字符)

    %e

    浮点数字(科学计数法)

    %E

    浮点数字(科学计数法,用E代替e)

    %f(%F)

    浮点数字(用小数点符号)

    %g

    浮点数字(根据值得大小采用%e或%f)

    %G

    浮点数字(类似于%g)

    %p

    指针(用十六进制打印值得内存地址)

    %n

    存储输出字符的数量放进参数列表的下一个变量中

    1. 转换说明符

    基本的转换说明符包含以下部分,注意其中的顺序:

    A、%字符:标记转换说明符的开始

    B、转换标识(可选):-标识左对齐,+标识在转换值之前要加上正负号;""空白字符表示整数之前保留空格;0表示转换值若位数不够则用0填充

    C、最小字段宽度(可选):转换后的字符串至少应该具有该值指定的宽度、如果是*,则宽度会从值元组中读出

    D、点(.)后跟精度值(可选):如果转换的是实数,精度值就表示出现在小数点后的位数。如果转换的是字符串,那么该数字就表示最大字段宽度。如果是*,那么精度将会从元组中读出。

    注意:如果格式化里面包含了百分号,那么必须使用%%,这样python就不会将百分号误认为是转换说明符了

    1. 举例
    2. 基本用法:

    >>> print('%s %s %s %d years old' % ('my','name','is',20))

    my name is 20 years old

    >>> print (' PI is : %f' % math.pi)

    PI is : 3.141593

    1. 字符宽度和精度

    >>> print('...%10f...' % math.pi) #输出十位的浮点数

    ... 3.141593... #通过…可以看到左侧补了两位空格,补全到十位

    >>> print('...%10.2f...' % math.pi)

    ... 3.14... #输出10,小数精度2位,不足位用空格补全

    >>> print('...%*.*f...' % (10,5,math.pi))

    ... 3.14159... #如果精度是*.*,会从值中读取精度

    1. 符号、对齐和0填充

    在字段宽度和精度之前可以(可选)放置一个"标表",该标表的值可以是:

    0(零):表示数字将会用0进行填充

    +(加号):表示不管是正数还是负数都标示出符号(在对齐时很有用)

    -(减号):表示左对齐数值

    空格:表示正数前加上空格,这对需要对齐正负数时会很有用

    >>> print('...%010.2f...' % math.pi)

    ...0000003.14... #输出10位,不足位用0补全

    >>> print('...%-10.2f...' % math.pi)

    ...3.14 ... #输出10位,左侧对齐

    >>> print('...%+f...' % math.pi)

    ...+3.141593... #在数值之前输出正负号

     

    Python流程控制

    1. if条件判断语句
      1. 单分支判断语句

      >>> age = 18

      >>> if age >= 16:

      ... print("too old")

      ...

      too old

      1. 双分支判断语句

      >>> age = 18

      >>> if age >= 16:

      ... print("too old")

      ... else:

      ... print("too young")

      ...

      too old

      1. 多分支判断语句

      #!/usr/bin/env python

      num = input('please input a num: ')

      if not num.isdigit: #判断输出的是否为数字,否则报错

      print("error!input a num")

      elif int(num) >= 18: #input接收为字符型,转为整型

      print("old")

      else:

      print("young")

    2. 真值测试

      Python中布尔值测试符

      任何非零数字或非空对象都为真

      >>> if 1:

      ... print("true")

      ... else:

      ... print("false")

      ...

      True

      数字零、空对象以及特殊对象被认为假

      >>> if 0:

      ... print("true")

      ... else:

      ... print("false")

      ...

      False

      比较和相等测试会返回True或False

    >>> 2 < 3 , 5 < 3

    (True, False)

    布尔and和or运算符会返回真或假

    >>> 1 and 1

    1

    >>> 1 and 0

    0

    >>> 0 or 1 #or测试,会由左至右求值操作,返回第一个为真的操作对象

    1

    >>> not 1 #如果值为真,就返回假;如果为假,就返回真

    False

    >>> 3 and 4 , 3 and 7 #如果两侧都为真,则输出右侧的值

    (4, 7)

    >>> '' and () #如果两侧都为假,则碰到的第一个假会终止运行,并返回第一个值

    ''

    >>> () and ''

    ()

    1. 比较运算符

      比较元素符条件中最基本的运算符,详见下表:

    表达式

    描述

    x == y

    X等于y

    x < y

    X小于y

    x > y

    X 大于y

    X >= y

    X大于等于y

    X <= y

    X小于等于y

    X != y

    X 不等于y

    X is y

    X和y是同一个对象

    X is not y

    X和y是不同对象

    X in y

    X是y容器(序列等)的成员

    X not in y

    X不是y容器(序列等)的成员

    >>> a = 'test'

    >>> b = 'text'

    >>> if a is b:

    ... print('True')

    ... else:

    ... print('False')

    ...

    False

    1. while循环

      while循环只要测试表达式为真,就一直循环

    >>> a = 1

    >>> while a <= 100:

    ... print(a)

    ... a += 1

    1. 循环特殊符号
      1. break 跳出整个循环过程
      2. continue 终止本次循环

    >>> a = 1

    >>> while a <= 10:

    ... a += 1

    ... if a == 5:

    ... continue

    ... print(a)

    1. pass 是一个无运算的占位符,代表什么都不做

      用于:

      >保证格式完整

      >保证语义完整

    >>> if age >= 18:

    ... print("too old")

    ... else:

    ... pass

    1. for循环
      1. 基本循环

    >>> for i in range(4):

    ... print(i)

    1. for可以识别多种数据类型,只要这种数据类型支持序列操作。比如字符串、列表、元组

    >>> for i in [1,2,3,4]: #for遍历列表

    ... print(i)

    >>> for i in 'jack': #for遍历字符串

    ... print(i)

    >>> for i in (1,2,3,4): #for遍历元组

    ... print(i)

    >>> y = {'name':'jack','age':'18'}

    >>> for x in y :

    ... print(x,'is',y[x])

    ...

    age is 18

    name is jack

    1. range函数

      函数原型:range(start, end, scan)

      参数含义:

      Start:计数从start开始。默认是从0开始

      End:计数到end结束,但不包括end

      scan:每次跳跃的间距,默认为1

      注意:在python2.x中,range返回值是一个列表

      在python3.x中,range返回值是一个迭代值,所以所以range(5)得到的值是range(0,5),但是不影响for循环使用,不过要想在命令行中输出列表,需要:list(range(5)

      >>> list(range(1,20,2))

      [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

       

      Python中重要的系统模块

    1. 在python中执行shell命令
      1. 调用os模块的system方法

        >>> import os

        >>> os.system('ls /root')

        使用这种方法不能把执行结果赋值变量,进行程序运算

        >>> a = os.system('ls /root')

        anaconda-ks.cfg install.log install.log.syslog py test.py #命令结果会输出到屏幕,但是变量中只有命令的返回值

        >>> print(a)

        0

        >>> b = os.system('ls /rootoooo')

        ls: cannot access /rootoooo: No such file or directory

        >>> print(b) #如果命令报错,则返回值为非零

        512

      2. 调用os模块的popen方法

        >>> a = os.popen('ls /root')

        >>> print(a.read())

        通过os.popen()返回的是file read的对象,对其进行读取read()的操作可以看到执行的输出,但是无法读取程序执行的返回值

      3. 使用subprocess模块

        Subprocess是python创建子进程的工具,然后在子进程中执行另一个进程

        1. 执行系统命令

          >>> subprocess.call(['ls','-l'])

          >>> subprocess.call(['ls','-l','/'])

          #把命令(ls)和选项(-l),以及参数(/)当做列表传递给subprocess.call()

          >>> subprocess.call('ls -l',shell=True)

          可以使用shell=True这个参数,这个时候,我们使用一整个字符串,而不是一个列表来运行子进程。Python将会运行一个shell,再用这个shell来解释这整个字符串

        2. 把命令结果赋值变量

          如果用call方法赋值,只会把命令返回值赋予变量,如:

          >>> a = subprocess.call(['ls','-l'])

    >>> print(a)

    1. #变量a的值是命令的返回值

    所以需要使用subprocess模块的check_output方法来给予变量赋值,也可以使用getstatusoutput方法

    >>> a = subprocess.getstatusoutput('ls /root')

    >>> print(a) #调用getstatusoutput,执行命可以看到返回值与命令结果

    (0, 'anaconda-ks.cfg install.log install.log.syslog py test.py')

    >>> b = subprocess.check_output(['ls','-l','/root'])

    >>> print(b) #可以看到命令执行结果

    1. OS模块的使用
      1. os模块概述

        python os模块包含普遍的操作系统功能,如果你希望你的程序能够与平台无关的话,这个模块尤为重要

      2. 常用方法
        1. os.name

          #输出字符串指示正在使用的平台,如果是windows则用'nt'表示,对于Linux、Unix用户,则是'posix'

    >>> import os

    >>> os.name

    'posix'

    1. os.getcwd()

      函数得到当前工作目录,即当前python脚本工作的目录路径

    2. os.listdir()

      返回指定目录下的所有文件和目录名

    3. os.remove()

      删除一个文件

      os.remove('test.py')

    4. os.system() #运行shell命令

      >>> os.system('ls -l /root')

    5. os.path.split()

      函数返回一个路径的目录名和文件名

    >>> os.path.split('/root/py')

    ('/root', 'py')

    1. os.path.isfile()和os.path.isdir(0函数分别检验给出的路径是一个文件还是目录

    >>> os.path.isdir('/root')

    True

    >>> os.path.isfile('anaconda-ks.cfg')

    True

    1. os.path.exists()函数,用来检验给出的目录或文件是否真的存在

    >>> os.path.exists('/root')

    True

    >>> os.path.exists('/rooooooot')

    False

    1. os.path.abspath(name) #获得绝对路径

    >>> os.path.abspath('.')

    '/root'

    >>> os.path.abspath('py')

    '/root/py'

    1. os.path.getsize(name) #获得文件或目录大小

      >>> os.path.getsize('/root')

      4096

      >>> os.path.getsize('/root/py')

      4096

      >>> os.path.getsize('anaconda-ks.cfg')

      1067

    (11)os.path.basename() #返回文件名

    >>> os.path.basename('/root/anaconda-ks.cfg')

    'anaconda-ks.cfg'

    (12) os.path.dirname() #返回文件路径

    >>> os.path.dirname('/root/anaconda-ks.cfg')

    '/root'

    (13) os.remove() #删除文件

    os.remove('/root/test.sh')

    (14) os.rmdir() #删除目录

    os.rmdir('test')

    (15) os.mkdir() #建立指定目录

    >>> os.mkdir('/root/dir') #建立一个目录

    >>>os.makedirs('/root/test/dir/jack') #建立多个目录

    1. logging模块的使用

      python的logging模块提供了通用的日志系统,可以方便第三方模块或者是应用使用。这个模块提供不同的日志级别,并可以采用不同的方式记录日志,比如文件,HTTP GET/POST,SNMP,Socket等,甚至可以自己实现具体的日志记录方式。

      1、logging使用

    >>> import logging

    >>> logging.debug('this is a debuf')

    >>> logging.warning('this is a debuf')

    WARNING:root:this is a debuf #默认只有warning级别打印到屏幕

    日志级别大小关系为:CRITICAL > ERROR > WARNING > INFO > DEBUG >NOTSET

    1. 通过logging.basicConfig函数对日志的输出格式及方式做相关配置

      logging.basicConfig函数各参数:

      filename:指定日志文件名

      filemode:和file函数意义相同,指定日志文件的打开模式,'w'或'a'

      format:指定输出的格式和内容,format可以输出很多有用信息,如下所示:

      %(levelno)s:打印日志级别的数值

      %(levelname)s:打印日志级别名称

      %(pathname)s:打印当前执行程序的路径,其实就是sys.argv[0]

      %(filename)s:打印当前执行程序名

      %(funcName)s:打印日志的当前函数

      %(lineno)d:打印日志的当前行号

      %(sactiome)s:打印日志的时间

      %(thread)d:打印线程ID

      %(threadName)s:打印线程名称

      %(process)d:打印进程ID

      %(message)s: 打印日志信息

    Datefmt:指定时间格式,同time.strftime()

    Level:设置日志级别,默认为logging.WARNING

    Stream:指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略。

    1. time模块的使用

      time模块时python的时间模块,在开始之前,首先说明一下几点:

      1. python中,通常有这几种方式来表示时间:1、时间戳2、格式化的时间字符串3、元组(struct_time)共九个元素。由于python的time模块实现主要调用C库,所以各个平台可能有所不同。
      2. UTC(Coordnated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间。在中国为UTC+8.DST(Daylight Saving Time)即夏令时
      3. 时间戳(timestamp)的方式:通常来说,时间戳表示的是从1970年1月1日08:00:00开始按秒计算的偏移量。运行"type(time。Time())",返回的是float类型。返回时间戳方式的函数主要有time(),clock()等。
      4. 元组(struct_time)方式:struct_time元组共有9个元素,返回struct_time的函数主要有gmtime(),localtime(),strptime()。
      1. 查看当前时间
        1. time_time() #获取当前时间戳

    >>> time.time()

    1441255787.3995078 #时间戳是按秒计算偏移量

    1. time.localtime()当前时间的struct_time(元组)形式

      >>> time.localtime()

      time.struct_time(tm_year=2015, tm_mon=9, tm_mday=3, tm_hour=12, tm_min=50, tm_sec=57, tm_wday=3, tm_yday=246, tm_isdst=0)

      time.localtime()输出说明

    索引(Index)

    属性(Attribute)

    值(Values)

    0

    tm_year(年)

    比如2013

    1

    tm_mon(月)

    1-12

    2

    tm_mday(日)

    1-31

    3

    tm_hour(时)

    1-23

    4

    tm_min(分)

    0-59

    5

    tm_sec(秒)

    0-61

    6

    tm_wday(weekday)

    0-6(0表示周日)

    7

    tm_yday(一年中第几天)

    1-366

    8

    tm_isdst(是否是夏令时)

    默认为-1

    1. time.ctime()当前时间的字符串形式

    >>> time.ctime()

    'Thu Sep 3 13:02:38 2015'

    1. 其他相关函数
      1. Gmtime()函数

        #gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time

    >>> time.gmtime()

    time.struct_time(tm_year=2015, tm_mon=9, tm_mday=3, tm_hour=5, tm_min=4, tm_sec=46, tm_wday=3, tm_yday=246, tm_isdst=0)

    #查看格林威治标准时间

    1. Mktime()函数

      将一个struct_time或者9个参数的时间元组转化为时间戳

    >>> time.localtime()

    time.struct_time(tm_year=2015, tm_mon=9, tm_mday=3, tm_hour=13, tm_min=6, tm_sec=58, tm_wday=3, tm_yday=246, tm_isdst=0) #查看当前时间元组

    >>> time.mktime(time.localtime())

    1441256956.0 #把当前时间元组转为时间戳

    >>> time.mktime((2015,9,3,2,2,9,3,127,0))

    1441216929.0 #把这个元组转为时间戳

    1. Strftime函数—把一个代表时间的元组或者struct_time(如由time.localtime()和time.gtime()返回)转化为格式化的时间字符串。如果tuple未指定,将转入time.localtime()。

    >>> time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())

    '2015-09-03 13:16:10' #把当前时间转换为字符串日期

    日期格式参数说明:

    格式

    含义

    %a

    本地(locale)简化星期名称

    %A

    本地完整星期名称

    %b

    本地简化月份名称

    %B

    本地完整月份名称

    %c

    本地相应的日期和时间表示

    %d

    一个月中的第几天(01-31)

    %H

    一天中的第几个小时(24小时制,00-23)

    %I

    第几个小时(12小时制,01-12)

    %j

    一年中的第几天(001-366)

    %m

    月份(01-12)

    %M

    分钟数(00-59)

    %p

    本地am或者pm的相应符

    %S

    秒(01-61)

    %U

    一年中的星期书。(00-53星期天是一个星期的开始)第一个星期之前的所有天数都放在第0周

    %w

    一个星期中的第几天(0-6,0是星期天)

    %W

    和%u基本相同,不同的是%W以星期一为一个星期的开始

    %x

    本地相应日期

    %X

    本地相应时间

    %y

    去掉世纪的年份(00-99)

    %Y

    完整的年份

    %Z

    时区的名字(如果不存在为空字符)

    %%

    '%'字符

  • 相关阅读:
    大文件上传
    http协议
    memcache通过hash取模算法,实现多服务器存取值
    页面静态化案例---一键生成详情页面静态化(全站静态化+局部动态)
    页面静态化案例---一键生成详情页面静态化(全站静态化)
    页面静态化案例---数据列表静态化
    LCD1602液晶显示模块的单片机驱动深入详解之硬件篇
    ANDROID开发之GC_CONCURRENT freed
    ANDROID开发之OOM:一张图片(BitMap)占用内存的计算 图片内存优化
    ANDROID开发 Fatal signal 11(SIGSEGV) at 0x问题解决方案
  • 原文地址:https://www.cnblogs.com/fengyutech/p/4954467.html
Copyright © 2011-2022 走看看