zoukankan      html  css  js  c++  java
  • python3.x 基础一

    1.python 格式化print

    #/usr/bin/env python
    #-*- coding: utf-8 -*-
    #Author:jenvid.yang
    # 连接符号+,可以连接多个变量或者需要描述内容,连接符号中间并不会产生空格
    # 尽量不用连接符号+,每次连接需要开辟内存空间
    print('hello' + 'world!')
    print('hello' + ' world!')
    # helloworld!
    # hello world!
    
    
    # 占位符,%s字符输出,%d整形输出,%f浮点型输出
    # 常用,只开辟一次内存空间
    num1=1
    num2=2.2
    num3=3
    name='yzw'
    print('num1 is %d, num2 is %f, num2 is %d, num3 is %f,name is %s' % (num1,num2,num2,num3,name))
    # num1 is 1, num2 is 2.200000, num2 is 2, num3 is 3.000000,name is yzw
    # 小数点保留0.2或者.2表示保留2位小数点
    print('num2 is %0.2f, num3 is %.3f' % (num2,num3))
    # num2 is 2.20, num3 is 3.000
    # 占位符宽度,常用对齐,%n表示左边补空格+原字符串个数共占n,
    print('name is %10s' %(name))
    print('name is %8s' %(name))
    print('name is %6s' %(name))
    print('name is %s' %(name))
    #name is        yzw
    # name is      yzw
    # name is    yzw
    # name is yzw
    # -号表示右边留空
    print('name is %-10s,%d' %(name,num1))
    # name is yzw       ,
    
    
    # format格式输出,format(数值, '格式'),花括号表示输出顺序,与format里面变量一致
    print ('{0} {1}:{2}'.format(num1,num2,num3))
    # 1 2.2:3

    print显示颜色

    格式:33[显示方式;字体颜色;背景颜色m 需要输出的内容 [33[0m

    -------------------------------------------
    字体色     |       背景色     |      颜色描述
    -------------------------------------------
    30        |        40       |       黑色
    31        |        41       |       红色
    32        |        42       |       绿色
    33        |        43       |       黃色
    34        |        44       |       蓝色
    35        |        45       |       紫红色
    36        |        46       |       青蓝色
    37        |        47       |       白色
    -------------------------------------------
    -------------------------------
    显示方式 | 效果 ------------------------------- 0 | 终端默认设置 1 | 高亮显示 4 | 使用下划线 5 | 闪烁 7 | 反白显示 8 | 不可见
    -------------------------------

    2.while/for...else

    • break结束最近的循环
    • continue结束当次循环,继续最近循环的下一次循环
    • 其他语言好像没有else子句
    • 循环结束判断条件常用语循环体内最后增加技术方法
    #/usr/bin/env python
    #-*- coding: utf-8 -*-
    #Author:jenvid.yang
    count = 0
    num2 = 2
    while count < 3:
        num1 = int(input('pls guest a number:'))
        if num1 > num2:
            print('bigger')
        elif num1 < num2:
            print('smaller')
        else:
            print('bingo I am if else')
            break
        count+=1
    else:
        print('I am while else')
    # I am if else
    # while循环内部只要成功执行一次,同级别else不执行
    # pls guest a number:1
    # smaller
    # pls guest a number:3
    # bigger
    # pls guest a number:2
    # bingo I am if else
    
    # while循环内部if判断全失败,则执行else
    # pls guest a number:1
    # smaller
    # pls guest a number:1
    # smaller
    # pls guest a number:1
    # smaller
    # I am while else
    
    # for...else一样,记忆方法:while/for...else有且只有一个执行

    3.模块sys

    • sys.path查看lib默认环境变量
    >>> import sys
    >>> l_env = sys.path
    >>> for i in l_env:
    ...     print(i)
    ... 
    
    /usr/lib/python35.zip
    /usr/lib/python3.5
    /usr/lib/python3.5/plat-x86_64-linux-gnu
    /usr/lib/python3.5/lib-dynload
    /usr/local/lib/python3.5/dist-packages
    /usr/lib/python3/dist-packages
    • sys.path.append添加自定义路径
    >>> print(sys.path)
    ['', '/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib-dynload', '/usr/local/lib/python3.5/dist-packages', '/usr/lib/python3/dist-packages']
    >>> sys.path.append("/root/")
    >>> print(sys.path)
    ['', '/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib-dynload', '/usr/local/lib/python3.5/dist-packages', '/usr/lib/python3/dist-packages', '/root/']
    • 通过在/usr/local/lib/python3.5/dist-packages (ubuntu)下增加xxx.pth 加入自定义路径
    root@T450:/usr/local/lib/python3.5/dist-packages# cat custom.pth 
    /home/yangzhenwei
    import sys
    l_env = sys.path
    for i in l_env:
        print(i)
    print (sys.path) #默认全局环境变量
    
    /usr/bin/python3.5 /root/PycharmProjects/S14/day02/sys_mod.py
    /root/PycharmProjects/S14/day02
    /root/PycharmProjects/S14
    /usr/lib/python35.zip
    /usr/lib/python3.5
    /usr/lib/python3.5/plat-x86_64-linux-gnu
    /usr/lib/python3.5/lib-dynload
    /usr/local/lib/python3.5/dist-packages
    /home/yangzhenwei
    /usr/lib/python3/dist-packages
    • sys.argv[0]
    1. 如果是在命令行中执行,则返回一个空的字符串
    2. 在pycharm中执行,则返回当前py文件的全路径文件名
    >>> cmd1=sys.argv[0]
    >>> print(type(cmf1))
    >>> print(type(cmd1))
    <class 'str'>
    >>> print(cmd1)
    1. 在命令行中执行py文件,取外部参数
    import sys
    print(sys.argv[0])
    print(sys.argv[1])
    print(sys.argv[2])
    
    #python sys_mod.py  1 2 3
    sys_mod.py
    1
    2

    4.模块os

    • os.system执行shell命令,但是不保存结果
    >>> import os
    >>> cmd_res = os.system("df -h")
    文件系统        容量  已用  可用 已用% 挂载点
    udev            3.8G     0  3.8G    0% /dev
    tmpfs           769M  9.5M  759M    2% /run
    /dev/sda5       230G  214G  5.2G   98% /
    tmpfs           3.8G   56M  3.7G    2% /dev/shm
    tmpfs           5.0M  4.0K  5.0M    1% /run/lock
    tmpfs           3.8G     0  3.8G    0% /sys/fs/cgroup
    tmpfs           769M   72K  769M    1% /run/user/1000
    >>> print(cmd_res)
    0
    • os.popen执行shell命令,返回内存地址
    >>> cmd_res1 = os.popen("df -h")
    >>> print(cmd_res1)
    <os._wrap_close object at 0x7ff0760c44e0>
    >>> 
    • os.open().read(),执行shell命令,保存结果/返回打印内容
    >>> cmd_res2 = os.popen("df -h").read()
    >>> print(cmd_res2)
    文件系统        容量  已用  可用 已用% 挂载点
    udev            3.8G     0  3.8G    0% /dev
    tmpfs           769M  9.5M  759M    2% /run
    /dev/sda5       230G  214G  5.2G   98% /
    tmpfs           3.8G   56M  3.7G    2% /dev/shm
    tmpfs           5.0M  4.0K  5.0M    1% /run/lock
    tmpfs           3.8G     0  3.8G    0% /sys/fs/cgroup
    tmpfs           769M   72K  769M    1% /run/user/1000
    • os.mkdir 在当前目录创建一个目录,如果已经存在,则报错
    • mkdir(path, mode=511, *, dir_fd=None),可以指定os权限
    • os.rmdir 在当前目录删除指定目录,如果目录内有文件,则报错
    • 导入自定义模块
    1. 首先增加自定模块,准备导入day01_login_03.py
    2. root@T450:/usr/local/lib/python3.5/dist-packages# cat custom.pth
      /home/yangzhenwei
      /root/PycharmProjects/S14/day01/bin
    3. 导入到自定义py文件里面如果有相对路径,会自动变成本py的相对路径
      #/usr/bin/env python
      #-*- coding: utf-8 -*-
      #Author:jenvid.yang
      import day01_login_03

      usercontent = open('../config/users.inf', 'r') FileNotFoundError: [Errno 2] No such file or directory: '../config/users.inf'
    4. 暂时复制相关文件到相对目录
    5. python3.5 import_custom_mod_py.py
      pls input your name:alex
      pls input your password:
      your username or password is invalid,pls reinput!
      pls input your name:ale 
      pls input your password:
      your username or password is invalid,pls reinput!
      pls input your name:alex
      pls input your password:
      welcome login system alex
    6. pyc,预编译文/部分编译,第一次运行py文件会将结果存到该文件,二次运行比较源文件和编译文件时间戳,决定是否重新解释执行源文件

    5.str.isdigit

    • 判断字符是否全部由数字组成,否则为false
    • >>> a='111'
      >>> a.isdigit()
      True
      >>> b='aa11'
      >>> b.isdigit()
      False

    6.is(is not)运算符

    • 用于判断一个对象是否是某种类型
    • >>> type('11') is str
      True
      >>> a=[1,2]
      >>> type(a) is list
      True

    root@T450:/usr/local/lib/python3.5/dist-packages# cat custom.pth
    /home/yangzhenwei
    /root/PycharmProjects/S14/day01/bi

     7.二进制位运算

    •  a 为 60,b 为 13
    • a = 0011 1100
      
      b = 0000 1101
    运算符描述实例
    & 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 (a & b) 输出结果 12 ,二进制解释: 0000 1100
    | 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 (a | b) 输出结果 61 ,二进制解释: 0011 1101
    ^ 按位异或运算符:当两对应的二进位相异时,结果为1 (a ^ b) 输出结果 49 ,二进制解释: 0011 0001
    ~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 。~x 类似于 -x-1 (~a ) 输出结果 -61 ,二进制解释: 1100 0011,在一个有符号二进制数的补码形式。
    << 左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。 a << 2 输出结果 240 ,二进制解释: 1111 0000
    >> 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数 a >> 2 输出结果 15 ,二进制解释: 0000 1111
    •  &真真为真,|真假为真,^相异为真,~真假互换,<<左移丢高补低,>>右移丢低补高

    8.三元运算

    • 值=a if a > b else c,条件为真取a,否则取c
    • >>> a,b,c=1,2,3
      >>> a if a>b else c
      3
      >>> b if a<b else c
      2

     9.字符与bytes转换

    • str->encode->bytes,bytes->decode->str
    • 3.x网络传输必须是二进制,2.x可以是zifuchuan
    • 默认编码encodeing=('utf-8')
      >>> msg1='水电费水电费'
      >>> msg2='asdfasdf'
      >>> print(msg1.encoding=('utf-8'))
      b'xe6xb0xb4xe7x94xb5xe8xb4xb9xe6xb0xb4xe7x94xb5xe8xb4xb9'
      >>> print(msg2.encoding=('utf-8'))
      b'asdfasdf'
      >>> print(msg1.encode(encoding='utf-8').decode(encoding='utf-8'))
      水电费水电费

     10.数据类型list

    • 排序/反转操作原列表
    • pop默认弹出最后一个元素 
    • 赋值直接给下标
    >>> city=[]
    >>> city.append('guangzhou')
    >>> city
    ['guangzhou']
    >>> city.append('foshan')
    >>> city
    ['guangzhou', 'foshan']
    >>> city.insert(0,'dongguan')
    >>> city
    ['dongguan', 'guangzhou', 'foshan']
    >>> city[0]
    'dongguan'
    >>> city[0-1]
    'foshan'
    >>> city[-1]
    'foshan'
    >>> city.insert(1,'zhuhai')
    >>> city
    ['dongguan', 'zhuhai', 'guangzhou', 'foshan']
    >>> city[::-2]
    ['foshan', 'zhuhai']
    >>> city[::2]
    ['dongguan', 'guangzhou']
    >>> city.pop()
    'foshan'
    >>> city
    ['dongguan', 'zhuhai', 'guangzhou']
    >>> city.remove('dongguan')
    >>> city
    ['zhuhai', 'guangzhou']
    >>> city.sort()
    >>> city
    ['guangzhou', 'zhuhai']
    View Code
    >>> city.reverse()
    >>> city
    ['beijing', 'guangzhou', 'zhuhai']
    >>> city[0]='shenzhen'
    >>> city
    ['shenzhen', 'guangzhou', 'zhuhai']
    View Code
    • copy 浅复制,只复制第一层,深复制导入copy模块,用deepcopy方法
    • 多层嵌套的时候,内部是内存地址/指针,因此改一个全部改
    >>> city
    ['shenzhen', 'guangzhou', 'zhuhai']
    >>> city1=['chongqing','chengdu']
    >>> city.extend(city1)
    >>> city
    ['shenzhen', 'guangzhou', 'zhuhai', 'chongqing', 'chengdu']
    >>> city2=['shanghai','hangzhou']
    >>> city[1]=city2
    >>> city
    ['shenzhen', ['shanghai', 'hangzhou'], 'zhuhai', 'chongqing', 'chengdu']
    >>> city3=city.copy()
    >>> city3
    ['shenzhen', ['shanghai', 'hangzhou'], 'zhuhai', 'chongqing', 'chengdu']
    >>> city3[1][0]='SHANGHAI'
    >>> city
    ['shenzhen', ['SHANGHAI', 'hangzhou'], 'zhuhai', 'chongqing', 'chengdu']
    >>> city3
    ['shenzhen', ['SHANGHAI', 'hangzhou'], 'zhuhai', 'chongqing', 'chengdu']
    >>> city[0]='Shenzhen'
    >>> city
    ['Shenzhen', ['SHANGHAI', 'hangzhou'], 'zhuhai', 'chongqing', 'chengdu']
    >>> city3
    ['shenzhen', ['SHANGHAI', 'hangzhou'], 'zhuhai', 'chongqing', 'chengdu']
    >>> 
    View Code
    • 补充浅copy
    >>> import copy
    >>> person=['name',['age',100]]
    >>> p1=copy.copy(person)
    >>> p2=person[:]
    >>> p3=list(person)
    >>> print(p1,p2,p3)
    ['name', ['age', 100]] ['name', ['age', 100]] ['name', ['age', 100]]
    >>> print(id(p1),id(p2),id(p3))
    140006071338632 140006094074952 140006094157064
    View Code
    • list.index('value')获取某个元素的下标

     11.数据类型元组tuple

    • 元组不能更改,只读列表

    12. 列表索引获取enumerate

    >>> list1=['a','b','c','d']
    >>> for key,values in enumerate(list1):
    ...     print(key,values)
    ... 
    0 a
    1 b
    2 c
    3 d

    13.数据类型字符串str

    http://www.cnblogs.com/jenvid/p/7808498.html

    14.数据类型字典dict

     http://www.cnblogs.com/jenvid/p/7809329.html

     15.未完待续

  • 相关阅读:
    克隆用户过狗提权
    一个JS引发的血案
    python-标识符(Identifiers)和关键字(keywords)
    提取nmap扫描出来的xml文件
    Hydra扫描姿势
    Senparc.Weixin.MP SDK 微信公众平台开发教程(十二):OAuth2.0说明
    Senparc.Weixin.MP SDK 微信公众平台开发教程(十一):高级接口说明
    Senparc.Weixin.MP SDK 微信公众平台开发教程(十):多客服接口说明
    Senparc.Weixin.MP SDK 微信公众平台开发教程(九):自定义菜单接口说明
    Senparc.Weixin.MP SDK 微信公众平台开发教程(八):通用接口说明
  • 原文地址:https://www.cnblogs.com/jenvid/p/7798343.html
Copyright © 2011-2022 走看看