zoukankan      html  css  js  c++  java
  • Python -- 基础

    标签(空格分隔): Python


    Python简介

    • Python是一种面向对象、解释型计算机程序设计语言。
    • Python开发环境和编辑工具
    • Windows:编辑器是Python IDE;
    • Linux:自带Python解释器,编辑器为vi.
    • Python的输入输出
    • 输入:变量,控制台;
    • 输出:显示,文件,数据库,网络
    • 输出语句:print
    • 输入语句:raw_input/input

    Python源码编辑编译执行

    • .py文件:是Python的源码文件,可以用来编辑和执行;
    • 环境变量
    • .pyc文件:是一种字节码文件,是由源码文件经过Python解释器编译后生产的文件,提高加载速度,但不能提高执行速度;
    • python -m py_compile ****.py
    • .pyo文件:是一种字节码文件,是由源码文件经过Python解释器优化编译生成的文件
    • python -O -m py_compile ***.py

    首先,Python源码被解释器编译生成字节码文件(不能被计算机直接识别),然后由Python虚拟机执行转化为二进制文件,可被计算机识别而执行。

    Python变量及内存格式

    • Python中的赋值,不是真正意义上修改内存的值,而是将变量名和子啊内存中存在的值做绑定(即引用);
    • 优点:节省内存,多个变量可以指向同一个地址;
    • 缺点:如果修改变量的变量值在内存中不存在,需要重新申请内存,绑定变量名和地址,降低效率。
    • (Python对long型数值的大小没有限制,可以无限增大)
    • type可以根据数值返回其数据类型
    • 运算优先级:complex(复数) > float > long > int
    • 所有的数字在计算机中都是以补码的形式存在的!!
      • 补码转原码:正数:补码与原码相同;负数:符号位不变,其余位取反后加1.
    • 位运算优先级:
    • 取反 > 左移 > 右移 > 按位与 > 按位异或 > 按位或

    Python随机数

    import random
    random.random() #随机生成一个0<= n < 1.0的浮点数;
    random.uniform(a, b) #随机生成一个(a, b)范围内的浮点数
    random.randint(a, b) #随机生成一个(a, b)范围内的整数
    random.randrange([start], [stop], [step]) #从指定范围内,在指定基数递增的集合中,获取一个随机数
    random.choice(sequence) #从序列中获取一个随机元素
    random.shuffle([]) #用于将一个列表中的元素打乱
    random.sample(sequence, k) #从指定序列中随机获取指定长度的片段
    

    Python数据结构之序列

    • 序列是一组有顺序的元素的集合,可以通过下表偏移量访问到它的一个或几个成员;
    • list, tuple, str, Unicode字符串 -- 其中字符串和元祖是固定长度,不能修改,列表可以。
    • list1 = [1,2,3,4,5]
    • tuple1 = (1,2,3,4,5)
    • str1 = "12345"
    • 基本操作:
    • len()
    • max/min(seq)
    • sum(seq) //只能用于全是整数的列表
    • reversed(seq) //返回一个逆序访问的迭代器
    • zip(seq1, seq2, seq3, ..) //接收任意多个序列作为参数,返回一个tuple列表
      此处输入图片的描述

    Python数据结构之字符串unicode

    • ASCII是8位的字符,最多表示256个字符;

    • 中文编码规范是GB2312/GBK,它使用两种ASCII表示一个汉字字符;

    • 如果中英文混搭,计算机可能理解错误,需要复杂的逻辑才能区别一个汉字的界线,能否为每个文字都分配一个单独的编码?

    • Unicode:是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换。每个Unicode字符占2个字节。

    • u'abc' --> U+0061 U+0062 U+0063

    • u'u0061' --> u'a'

    • u"中国" --> (编码生成utf-8的格式)(xxxxxxxx) --> (查找对应的字模)

    • Unicode编码格式:

    • ASCII, ISO-8859-1, UTF-8, UTF-16

    • UTF-8使用1~4个字节来表示其他语言的字符;

    • UTF-16使用2个字节来表示其他语言字符。

    Python数据结构之列表

    • 列表是序列式的数据类型,他可以通过索引或者切片操作来访问一个或者多个连续的元素;列表元素可以改变;
    • 定义初始化:
    • mylist = [1,2,3,4,5]
    • mylist = list("12345")
    • mylist = list(('1', '2', '3'))
    • mylist = range(10)
    • 列表访问:
    • mylist[1]
    • mylistp[1:4]
    • 列表更新:
    • mylist[1] = 10
    • mylist = mylist * 2 //列表累加2次
    • mylist = mylist + [4,5,6]

    Python数据结构之元组

    • 元组是不可变的序列,元组有不同的元素组成,每个元素可以存储不同类型的数据;
    • 创建:
    • tuple1 = ("what", "is", "python")
    • tuple1 = tuple("abcde")
    • tuple1 = ()
    • tuple1 = tuple(list1) //可接收一个列表作为参数建立一个元组
    • tuple1 = ("abc",) //要元组中包含一个值,必须有一个逗号,用于和普通分组操作区分(如果没有逗号,则Python将把它认为是一个字符串而不是元组!)
    • tuple1 = 'a', 'b', 'c'
    • 访问:
    • t1[0]
    • t1[0:3]
    • t1[0:3:2]
    • 元组是不可变的,但是当元组和列表组合,元组不可变,但元组中包含可变对象仍然可以改变;
    • 如;tuple1 = ("Anddy", [45, 56, 45], [34, 56, 78, 345])中后面的两个列表中的数据都可以改变。
    • Python的深拷贝和浅拷贝:
      此处输入图片的描述

    Python数据结构之字典

    • 字典是Python种唯一的映射类型。key是唯一的,key与value是一对多的关系;
    • 赋值:
    • dict1 = {}
    • dict1 = {"id1" : "45353", "id2" : "45435"}
    • dict1 = dict([("id1", "45353"), ("id2", "45435")]) //元组列表/列表元组(每个元组或者列表只能有两个参数)
    • dict1 = dict(x=1, y=2)
    • dict1 = dict(**dict1) //means x = 1, y = 2
    • dict1 = {}.fromkeys(('x', 'y'), -1) //means {x:-1, y:-1} -- fromkeys表示创建一个默认字典,字典中元素具有相同的值
    • dict1 = {}.fromkeys('foo', 'bar') //means {foo:null, bar:null}
    • 字典的键值:不允许一个键值对一个多个值,如果初始化或者更新的过程中出现多个键值,会存储最后一个对应值,其他的自动删除

    Python逻辑与控制

    迭代器

    • 迭代器:是访访问集合内元素的一种方式,从集合的第一个元素开始访问,知道所有的元素访问完,不能回退,只能前进迭代;
    • 定义:it = iter(obj)
    • 访问:it.next() //迭代器是一个有next()方法的对象,当循环访问迭代器的每个元素时就调用next()方法,当所有元素都访问完时,引发一个StopIteration异常,告诉调用者,迭代完成。
    • 可以使用for循环遍历:for val in myiter: print(val)
    • 判断一个对象是否可迭代:from collections import Iterable
    • isinstance(obj, Iterable)

    列表解析

    • 列表解析:动态创建列表,在一个序列的值上应用一个任意表达式,将其结果收集到一个新的列表并返回;
    • 基本语法:[expr for iter_val in iterable]
    • for example: mylist = [x+1 for x in range(10)]
    • 扩展语法:[expr for iter_val in iterable if cond_expr]
    • for example: mylist = [x+1 for x in range(10) if x > 5]
    • 生成一个矩阵:
    • for example: myMatrix = [(x,y,z) for x in range(3) for y in range(3) for z in range(3)]
    • 例子:
    • 得到字符串中单词及其长度:s = "welcome to python world"; [[word, len(word)] for word in s.split()]

    生成器表达式

    • 是列表解析器的一个扩展,返回一个生成器,生成器每次计算出一个条目,把这个条目产生出来。生成器使用延迟算法,在内存上更为有效。
    • 语法:(expr for iter in iterable if cond_expr)
    • 创建:l1 = (val for val in range(10))
    • 列表解析器与生成器表达式的区别:
    • 列表解析器需要把所有条目生成出来;
    • 生成器表达式不需要把条目创建出来,每次计算的时候会把条目创建出来。
  • 相关阅读:
    深入理解vue路由的使用
    mac异常删除管理员账户恢复操作
    springMVC前后端分离开发模式下支持跨域请求
    npm 更新镜像安装Appium
    npm升级所有可更新包
    new AppiumDriver<>(new URL(url), capabilities) 报错 java.lang.NoSuchMethodError: com.google.common.base.Throwables.throwIfUnchecked(Ljava/lang/Throwable;)V
    Jmeter命令行运行实例讲解
    shodan会员命令版
    AS-REPRoasting
    Password Spraying/密码喷洒
  • 原文地址:https://www.cnblogs.com/little-YTMM/p/6155759.html
Copyright © 2011-2022 走看看