计算机中,有且仅有CPU具有执行权限,能够执行指令的只有CPU!

人在应用程序上输入的文字或文本,叫做明文!

在屏幕上输入或是输出的是字符,计算机保存的是 有字符编码的 二进制数。

变量赋值规则:例如:a=1

先在内存中开辟一块空间,存放数1,内存上会有一个相对应的id号,然后变量a指向这块内存区域和id号,python编译器有垃圾清除的功能,若开辟的这块内存区域一段时间内不调用,数据就会被清除,为其他的数据腾空间。

python2 容错率高,自作聪明的完成转码拼接。

python3 将字节类型和字符串类型完全清晰的分开了,如果不同类型拼接,会报错!

#字符编码

ASCII码:127个数字:7个比特位 ----------->美国

扩展ASCII码: 256个数字:  8个比特位 --------->拉丁

中文扩展ASCII码(GB2312):几千个状态----------> 中国

中文扩展ASCII码(GBK):两万个状态----------> 中国

unicode(明文:二进制数字):两个字节 ------------>六万多个状态 -------全世界

utf-8(二进制对应二进制):-------全世界

py2.X 中        str : bytes数据         unicode:unicode编码后的二进制数据

py3.X中        str  : unicode(u)      bytes :bytes(b) <存储和传输时使用>

知识点:

1、unicode(2个字节,万国码),utf-8(可变长的编码,英文1个字节,中文3个字节),GBK(2个字节)都是编码方式。

2、内存存储unicode 格式的二进制数据(可理解为文件)。

3、文本以utf-8等编码方式将内存中unicode编码的文件保存到硬盘之中。utf-8格式下的存储文件占空间小。

repr():查看字节数据

不同形式的编码,前边都有标志(unicode 对应u)

decode(参数):参数:指解码规则!(解码)

encode(参数):参数:指编码规则!(编码)

python2 容错率高,自作聪明的完成转码拼接。

python3 将字节类型和字符串类型完全清晰的分开了,如果不同类型拼接混用,会报错!字符串中可以使用的方法对字符串或是字节数据是一样的操作!

IDE编译器执行没问题,但不一定终端执行没问题,可以先在IDE上执行测试,将输出的数据改成unicode 格式,在终端测试,再一种是先判断终端是哪种格式的编码,改IDE编译器的编码格式 #coding:****  ***代表编码规则,再在终端上判断测试。

注意点:

1、unicode,utf-8,GBK 都是编码规则。

2、为什么内存存储unicode。

任何数据执行都先放到内存中,编码和解码都是在文件执行的过程中完成的操作。

编码:明文 ----------->二进制数据

解码:bytes数据 ---(解码方式)-----> 二进制数据

对象.方法()  <对象一定对应着可以调用的方法!>

#变量

1、不能以数字,特殊字符开头,  下划线_可以使用,在命名之中。

2、不能以关键字命名

缩进  及控制块。if,循环,函数!

注释:#或是三个‘‘‘’’’或“““”””

#运算符:

算术运算符:+  -  *  /

赋值运算符: =  +=  -=  *=  /=

比较运算符:==(等于) >=  <=  !=   比较结果,返回布尔值!(一定是布尔值!)

逻辑运算符: and(与)  or(或)  not(非)

True and False  -------> False      False and False ----------> False

判断会一个一个去执行判断,从第一个开始;

or 取决权在第一个符号,某件事将结果决定了,就会按照决定值返回;而and相反,取决权在后边的符号:若第一个对了,会往后再判断,以最后起作用的返回值为准。

关系运算符  in  not in   是不是属于同一个对象,返回布尔值!

位运算符

#数据类型

整型  int   仅有一种表达方式,叫长整型。

可变数据类型:列表,字典

不可变数据类型:整型 元组 字符串  -----------> 一旦创建,不能修改

浮点型  float (f),科学技术法   E代表10的负一次方  0.000123   1.23e-4

folat   double     精度不一样

布尔值 其本身就是一个数据类型(True = 1 False = 0),可做计算。

流程控制

#字符串(string:)

s='let\'s go'  \转义符号

原生字符串 print(r"\fsjiaakdxie.")

查找 :切片 [:]

s1 = "hello world" print(s1[1:4])  print (s1[1:4:2])

.strip(“参数”)  把字符串开头和结尾的空格以及\n去掉。参数可以是任何一个字符结构。

拼接方法

+方法   s="hello"+"world"  效率的高低,取决于拼接文件的个数。两个拼接之后再去开辟内存空间存储合并之后的数据。以此类推。

join 方法   "*".join(["I","am","world"])以*为间隔,将字符串拼接在一起。右边是列表格式的字符串,整型不能改变,所以拼接不了!

分割方法

"字符串".split("分隔符",最大分割数)   s="hello world".split(" ")   以空格为分割符将字符串分开,生成一个列表。以某个分割符来分割的话,结果中分隔符不会留下。

. rsplit() 对字符串从右往左分割!

.splitlines()  对字符串根据换行符进行分割。

查找字符  find()   找不到不会报错

print("hello world".find("l"))   从左往右查找,找到一个就返回索引值

print("hello world".rfind("l"))   从右往左查找,找到一个就返回索引值

print("hello world".find("l",3))   从左往右 索引为3的位置 查找,找到一个就返回索引值。

print("hello world".index("l"))   从左往右查找对应字符的索引值,找到就返回,找不到就报错。

替换

print("hello world".replace("world","python"))   完全匹配,一对一的去匹配,只要一个字符匹配不上就会报错。

对 字符串 这种不可变数据操作,都会有一个返回值,原字符串不会发生改变。

大小写互换

print("Hello world".swapcase())  大写变小写,小写变大写!

首字母大写

print("Hello world".capitalize())   字符串开头,第一个字母大写!

标题

print("Hello world".title())   字符串,第一个单词的首字母大写!

"hEllo woRld".upper()  不管字符串中有没有大小写,全部变成大写!

"hEllo woRld".lower()  不管字符串中有没有大小写,全部变成小写!

位置对齐

print("hello world".center(50,"*"))  居中显示hello world,所有文本占50个字符,其他空白位置由*填充。

print("hello world".ljust(50,"*"))  左对齐

print("hello world".rjust(50,"*"))  右对齐

.zfill()  占多少个字符,多出来的补零。字符串靠右。

字符串的格式化输出 .format()  字符串中填充的位置和后边添加的字符串,是一一对应的关系。

.format_map() 括号中存放的才是字典。

print("hello %s,%s"%("sb","egon"))

占位符

%s 字符串

%d 整型

%f 浮点型

判断字符串是否是数字

"12".isdecimal()

"-12".isdigit()

"34".isnumeric()  针对性很强,对于汉语中的数字,也可以识别

print 输出,返回布尔值。

占空格

"hEllo\twoRld".expandtabs()  默认8个空格,作用于\t ,若是想错开多点,在后边括号内输入想扩展的数字。

is开头的都是判断函数,对字符串操作完之后,会返回布尔值,对就是True,错就是Flase.

列表      可迭代对象: 能够进行for循环的

#创建形式  l = [ 1,"hello",[4,5],{"name":"egon"}]

l2 = list([])  []叫做序列,要放到列表中的元素总结起来。

#查: 切片[:]

拿到列表的索引值及对应的元素。

第一种方法:利用标志位

count=0

for i in [11,22,33]:

print("%s---------%s"%(count,i))

count+=1

第二种方法:

l = [11,22,33]

for i in l:

print(l.index(i),i)

第三种方法:enumerate() 函数 自动生成序号和值

l = [11,22,33]

for i,v in enumerate(l,1):  #函数后可以自定义序号。

print(i,v)

#增加    此操作没有返回值!

l.append()   追加,在最后一个位置添加,每次只能添加一个对象!!!

添加多个元素:l.extend()

可以添加多个元素,中间用,分开,或是放个列表。l.expend([7,8])

指定位置添加插入:  .instert(位置,元素)  例子:l.instert(2,"zhang")

#删除

通过位置删除:l.pop()  默认删除最后一个,可以指定位置。  有返回值!!!,返回值为删除的元素。

删除某个具体内容:l.remove()  括号中放入要删除的元素。

删除整个,或是一段的列表  del l[1]   del l[]   del l[1:3]

#改  赋值操作!!!

通过索引值的位置   l[2][0]="字符串"   字符串内的数据发生改变,但是所对应的内存地址没有改变。

清空 l.clear()   将列表内的所有数据清空!!!   与l4=[]不是一样的列表  #推荐新建的方式。清空原列表,没有新建一个空列表,效率高!

#计算数量 .count()  统计列举中某个元素的数量

[[1,2,3,4].count(3)

统计列表所有的个数:len  print(len(l))

#排序:.sort()  从小到大排序,没有返回值!    ord 内置函数,查看ASCII码!

排序顺序可以自己调整,reverse =True(从大到小排)  reverse =False(从小到大排)

sorted([1,2,3])   内置函数,sorted() 也可以进行排序!

max()最大值  min()最小值

#复制 浅copy 和深copy

#反转

.reverse() 不管列表内数据的顺序,直接反转排序。

元组  是不可变类型,数据不能更改!

#创建

t = (1,2,3)  print(t)

t2 = tuple([1,2,3])  print(t2)

#不能进行修改操作

#查

print(t[:])  打印所有

字典

python中唯一具有映射关系的数据类型:字典的查询效率高于列表

#创建  键唯一且为不可变数据类型!

d={"name":"alex","age":23}

#查

print(d["name"])

v=d.get("name",None)  #推荐

print(v)

#遍历查询

for 循环,取到的是字典的键!

for i in d

print(i,"-------->"d[i])  #对应打印字典里的键值对

print("%s------>%s"%(i,d[i]))  #格式化打印

可以用list 转换成列表

print(d.keys())   #将键全部写入一个列表

print(d.values())  #将值全部写入一个列表

print(d.items()) #将字典中的键值对,每对组成一个元组,整体组成一个列表输出。

#增

d["age"]=123

#修改

d["键"] =值   d["1"]=666

#删除

根据键删除    d.pop("1")  有返回值!  .popitem() 随机删除一个

任何数据都可以删除的  del

d.clear()  将字典整个清空,然后留下空字典。

d.update() #增加字典,如果字典中没有就添加,有就覆盖。

d2={"height":123,"sex":"male",}

d.update(d2)

print(d)

for i in (序列对象seq):#seq可以是字符串,列表,元组,字典!

循环

1、循环次数由序列的一级元素的个数决定!

2、item 是定义的一个变量    range()对应一个列表,默认从0走,可以自定义起始位置。

continue  #结束本次循环

break  #结束整个循环

while 循环     死循环!

while 条件表达式 或是 布尔值:

执行代码

集合set   跟字典是一套,就是没有值  两个功能:1、去重,2、关系测试

是可变的数据类型!  print({[1,2]:"hello"}) 会报错!

set集合内的元素一定是不可变数据类型!print({1,2,[3,4]}) 会报错!

s = set([1,3,"hello"])  或是  s2={1,2,3}

print(s,s2)

#去重:

l = [1,2,2,34,45]

s="hello"

print(set(l))

print(set(s))    输出结果{"h","e","l","o"}去除重复的“l”,输出一个!

#关系测试

s1 = {"hello",1,2,3}

s2={1,2,("a","b")}

linux={"hello",4,5,6}

python={"hello",3,4,5}

#求并集

print(s1.union(s2))

print(s1 | s2)

#求交集   两个都有

print(s1.intersection(s2))

print(s1 & s2)

#求差集   我有对方没有的东西

print(s1.difference(s2))

print(s1 - s2)

#对称差集  把都没有的合并起来。#把两个互相不在的全打印

print(s1.symmetric_difference(s2))

print(s2.symmetric_difference(s1))

print(s1^s2)

两个集合合并  天然去重!把python合并到linux集合中

linux.update(python)

增加一个新的  linux.add("Alex")

删除 linux.discard("alex") #删除,如果元素不存在,不会报错

linux.remove("alex")# 删除,如果元素不存在,会报错

随机删 linux.pop() #随机删除

linux.issubset(python) #子集  判断是否是子集

linux.issuperset() #超集,父集  判断可用<,>进行

Py修行路 python基础(六)前期基础整理的更多相关文章

  1. Py修行路 python基础 (十六)面向对象编程的 继承 多态与多态性 封装

    一.继承顺序: 多继承情况下,有两种方式:深度优先和广度优先 1.py3/py2 新式类的继承:在查找属性时遵循:广度优先 继承顺序是多条分支,按照从左往右的顺序,进行一步一步查找,一个分支走完会走另 ...

  2. Py修行路 python基础 (二十五)线程与进程

    操作系统是用户和硬件沟通的桥梁 操作系统,位于底层硬件与应用软件之间的一层 工作方式:向下管理硬件,向上提供接口 操作系统进行切换操作: 把CPU的使用权切换给不同的进程. 1.出现IO操作 2.固定 ...

  3. Py修行路 python基础 (十二) 协程函数应用 列表生成式 生成器表达式

    一.知识点整理: 1.可迭代的:对象下有_iter_方法的都是可迭代的对象 迭代器:对象._iter_()得到的结果就是迭代器 迭代器的特性: 迭代器._next_() 取下一个值 优点: 1.提供了 ...

  4. Py修行路 python基础 (十五)面向对象编程 继承 组合 接口和抽象类

    一.前提回忆: 1.类是用来描述某一类的事物,类的对象就是这一类事物中的一个个体.是事物就要有属性,属性分为 1:数据属性:就是变量 2:函数属性:就是函数,在面向对象里通常称为方法 注意:类和对象均 ...

  5. Py修行路 python基础 (十九)面向对象进阶(下)

    item系列 __slots__方法 __next__ 和 __iter__实现迭代器  析构函数 上下文管理协议 元类一.item系列 把对象操作属性模拟成字典的格式.  例如:对象名['key'] ...

  6. Py修行路 python基础 (二十)模块 time模块,random模块,hashlib模块,OS及sys模块

    一.前提介绍: 可以开辟作用域的只有类,函数,和模块            for循环 if,else: 不能开辟自己的作用域 避免程序复用和重复调用,将这些写到一个.py文件中,做成一个模块,进行调 ...

  7. Py修行路 python基础(二)变量 字符 列表

    变量 容器 变量名 标记 数据的作用 字符编码 二进制位 = bit1个二进制位是计算机里的最小表示单元 1个字节是计算机里最小的存储单位 8bits = 1Byte =1字节1024Bytes = ...

  8. Py修行路 python基础 (十一)迭代器 与 生成器

    一.什么是迭代? 迭代通俗的讲就是一个遍历重复的过程. 维基百科中 迭代(Iteration) 的一个通用概念是:重复某个过程的行为,这个过程中的每次重复称为一次迭代.具体对应到Python编程中就是 ...

  9. Py修行路 python基础 (十三)匿名函数 与 内置函数

    一.匿名函数  1.定义: 匿名函数顾名思义就是指:是指一类无需定义标识符(函数名)的函数或子程序. 2.语法格式:lambda 参数:表达式 lambda语句中,开头先写关键字lambda,冒号前是 ...

随机推荐

  1. ubuntu14.04搭建Hadoop2.9.0伪分布式环境

    本文主要参考 给力星的博文——Hadoop安装教程_单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04 一些准备工作的基本步骤和步骤具体说明本文不再列出,文章中提到的“见参考”均指以上 ...

  2. 前端工程师(JavaScript)在业余时间如何提高自身能力

    1.前端工程师(JavaScript)在业余时间如何提高自身能力? https://www.zhihu.com/question/40186398?sort=created 2.前端开发工程师必读书籍 ...

  3. 服务器证书安装配置指南(IIS7.0)

    一.  生成证书请求 1.    进入IIS控制台   进入IIS控制台,并选择服务器的服务器证书设置选项.  2.    添加证书请求   进入服务器证书配置页面,并选择“创建证书申请”  3.   ...

  4. Struts01---入门小案例

    创建web项目    实现的效果! 用户点击页面不同的链接,后台调用不同的代码! 创建两个类实现共同的接口! public interface Action { String execute(); } ...

  5. WebForms UnobtrusiveValidationMode 需要“jQuery”ScriptResourceMapping。

    .net framework4.5开发中, Unobtrusive ValidationMode是一种隐式的验证方式,需要前端调用jquery来进行身份验证.且默认启用. 解决方法如下 方法一: 修改 ...

  6. 《Drools7.0.0.Final规则引擎教程》第4章 4.2 no-loop

    no-loop 定义当前的规则是否不允许多次循环执行,默认是 false,也就是当前的规则只要满足条件,可以无限次执行.什么情况下会出现规则被多次重复执行呢?下面看一个实例: package com. ...

  7. MpVue解析

    前言 mpvue是一款使用Vue.js开发微信小程序的前端框架.使用此框架,开发者将得到完整的 Vue.js 开发体验,同时为H5和小程序提供了代码复用的能力.如果想将 H5 项目改造为小程序,或开发 ...

  8. Gradle配置IDEA正常识别JPA Metamodel Generator动态生成的代码

    我们在使用JPA动态查询构建查询条件时,为了实现安全的类型检查,常常需要引用Hibernate JPA Metamodel Generator自动为我们生成静态元模型类. 而这些类由于编译时由Hibe ...

  9. Linux 下安装composer

    1.下载composer.phar文件. 2.将composer.phar文件上传linux. 3.执行 php composer.phar 4.全局安装:mv composer.phar /usr/ ...

  10. Python之xpath

    xpath是一种在XML文档中定位元素的语言,常用于xml.html文件解析,比css选择器使用方便XML文件最小构成单元: - element(元素节点) - attribute(属性节点) - t ...