【Python3】基础

Python万金油:爬虫,大数据(Spark),测试,Web(Flask,Django),AI(TensorFlow),脚本处理等
Simple is better than complex # 简洁胜于复杂
Now is better than never.Although never is often better than right now # 做也许好过不做,但不假思索就做不如不做

python动态语言;java,go静态语言
python官方文档:https://docs.python.org/3.11/index.html
IDLE Shell

python基本数据类型;type()
# 1
整数:int
浮点数:float
type(2/2)----float
type(2//2)---int
10进制:0,1,2,3,4...9,10
2进制:0,1,10,11,100
8进制:0,1,2..7,10
16进制:0,1,2,3...9,A,B,C,D,E,F,10
python中:
2进制:0b**
8进制:0o**
16进制:0x**
--->10进制:int()
--->2进制:bin()
-->8进制:oct()
--->16进制:hex()
bool:非0数/0,True/False,有值/空值,/None
complex(复数):16j
# 2
字符串:str
转义:'let\'s go'
换行:\n
单引号:\'
横向制表符:\t
回车:\r
三引号:''' 多行编辑字符串,普遍规定79个字符一行 '''
单引号换行:'hello\
world'
原始字符串:r''
字符串运算:+,*,[]
# 3
type([[1,2],[3,4],1,9,'hello',True,[True,False]]) # 	list ;嵌套列表
type((1)) # int
type(('hello')) # str ; ()既可以表示元组,又可以表示运算优先符
type((1,)) # tuple
type(()) # tuple
max([1,2,3,4,5,6]) # 6
min('helloworld') # d ; ascll
ord('w') # 119
ord('d') # 100
ord(' ') # 32
# 4 
type({1,2,3,4,5,6}) # set
{1,2,3,4,5}[0] # 报错,集合是无序的!无索引
{1,1,2,2,4,4} # {1,2,4} ;	集合是不重复的!
{1,2,3,4,5,6} - {3,4} # {1,2,5,6} ; 两个集合差集
{1,2,3,4,5,6} & {3,4} # {3,4} ; 两个集合交集
{1,2,3,4,5,6} | {3,4,7} # {1,2,3,4,5,6,7} ; 两个集合并集
type({}) #  dict
type(set()) # set
# 5
{key1:value1,key2:value2,...} # dict
{'q':'新月','w':'苍白','e':'月临','r':'月刺'}['q']
{1:'新月','1':'苍白','e':'月临','r':'月刺'}['1']
value: str int float list set dict ...
key: 必须是不可变的类型	int,str
#
![在这里插入图片描述](https://img-blog.csdnimg.cn/9047301cdfd0494cb74d9524b6e9499f.png#pic_center)

变量与运算符
=	;赋值
变量命名:clover >>sanyecao>> three_leaf_grass
首字符不能是数字,变量名由字母、数字、下划线组成;不能使用系统的保留关键字
int 值类型,不可变,str,tuple
list 引用类型,可变数据,set,dict
运算符
算术运算符:+	-	*	/	//	%		**	
赋值运算符:=	+=	-=		/=		%=	**=	//=
关系运算符:==		!=		>		<		>=		<=
逻辑运算符:and	or		not
成员运算符:in	not in
身份运算符:is	is not
位运算符:&	|	^:异或,如果相同则为0,不同则为1	~:取反补码	 	<<	>> # 把数字当做二进制数进行运算
字典的成员运算判断的是key
a={1,2,3}
b={2,1,3}
a==b # True  值
a is b # False   身份 id()
c==d # False
c is d # False
对象的三个特征:值,身份,类型  type()   isinstance(变量,类型)  isinstance(变量,(类型1,类型2,..))

表达式(Expression)是运算符(operator)和操作数(operand)所构成的序列
1 or 2 and 3 # 1 or 3 -> 1
IDE 集成开发环境 Integrated Development Environment
VSCode插件:微软官方网站:https://marketplace.visualstudio.com/vscode
快捷终端:ctrl + `
高效插件:snippet
pass	# 空语句/占位语句
for	# 用来遍历/循环 序列或者集合、字典
print(a,end='') # 默认换行符
for...else.. # else在最后循环完后,会执行
for中break,continue # 终止当前循环,当前跳过继续
for x in range(0,10,2): # 2为步长
a = [1,2,3,4,5,6,7,8]
b = a[0:len(a):2] # [1,3,5,7]

包,模块,类,函数
文件夹下包含__init__.py;当被导入时,自动执行;用于批量导入内置内库
import .. # 导入模块时,会执行该模块的代码
from .. import ..
主动引用模块下导入*
from .. impot *
被引用模块下:
__all__ = ['',''] # 针对 * 的对外引用数据
VSCode:setting,files.exclude,**/__pycache__

import sys
sys.setrecursionlimit(100000) # 设置递归最大层数
参数:
1.必须参数(个数)
2.关键字参数
3.默认参数(必须参数放在默认参数之前,默认参数需按关键字传参)
面向对象
类,驼峰命名;类中方法定义时,强制参数self;类中数据成员通过self关键字调用
封装一系列变量和方法;
def __init__(self): # 构造函数在实例化时自动调用;返回值只能是None
初始化对象的属性;self代表实例,保存实例变量的特征值
类变量和实例变量:若实例变量不在构造函数,则会返回类变量
self.__class__.类变量
类方法:操作类变量
@classmethod
def plus_sum(cls):
静态方法:无强制参数
@staticmethod
def add(x,y):
对实例变量读写赋值,建议通过类方法进行。
成员可见性:private、public;py中以__为首代表私有
私有方法无法调用,私有变量看似可以写读,实则是动态新增了个__的属性。
私有变量名被更改,__dict__中,_类名__变量名

面向对象3大特性:继承,封装,多态
py允许多继承:
class Student(Human):
	def __init__(self,school,name,age):
		self.school = school
		Human.__init__(self,name,age)
在子类构造函数调用父类构造函数赋值时,必须传self(相当于类.实例方法(self))----非主流继承
普遍继承方法:
class Student(Human):
	def __init__(self,school,name,age):
		self.school = school
		super(Student,self).__init__(name,age)

正则表达式是一个特殊的字符序列,一个字符串是否与我们所设定的这样字符序列匹配
import re
re.findall('正则表达式',字符串)
元字符,概况字符集
\d-数字		\D-非数字
\w-单词字符		\W
\s-空白字符		\S
r'' 将转义字符视为普通字符串
数量词:re.findall('[a-z]{3,6}',a)
正则表达式默认为贪婪
非贪婪:re.findall('[a-z]{3,6}?',a)   等价于  re.findall('[a-z]{3}',a)
*	匹配前面字符0次或者多次
a = 'pytho0python1pythonn2'
r = re.findall('python*',a) # ['pytho','python','pythonn']
+	匹配1次或多次
?匹配0次或多次
边界匹配:^...$	完整字符串是否满足正则
^..	以..开头
..$	以..结尾
组:()
[]中每个字符是或关系,()是且关系
r = re.findall('python*',a,re.I | re.S) # 多个模式,re.I-忽略大小写,re.S-对.匹配行为改变,将“\n”当做一个普通的字符进行匹配
re.match # 从首字符匹配,返回值是个对象,.span()位置
re.search # 搜索到第一个返回,返回值是个对象,.group()值
import re
s = 'life is short,i use python,i love python'
r = re.search('life(.*)python(.*)python',s)
print(r.group(0,1,2))
print(r.groups()) # 除去group(0)
re.sub	# 字符串替换
也能通过函数对匹配值动态处理
import re
language = 'PythonC#JavaC#PHPC#'
def convert(value):
	mathced = value.group() # value为对象
	return '!!'+matched+'!!'
r = re.sub('C#',convert,language)
print(r)  # Python!!C#!!Java!!C#!!PHP!!C#!!

JSON一种轻量级的数据交换格式
字符串是JSON的表现形式,符合JSON规范的字符串
re = json.loads(json_str) # 反序列化
序列化:json_str = json.dumps(py_)

python3新增的枚举类型,是一个类
from enum import Enum
class VIP(Enum):
	yellow = 1 # yellow标签,不能重复;值一样,将标签看作为第一个标签的别名
	green = 2
	black = 3
	red = 4
print(VIP.black)	# VIP.black枚举标签类型值
VIP.black = 6 # 报错
VIP.black.value # 枚举值
VIP.black.name # 枚举标签str值
枚举遍历
for v in VIP: # VIP.YELLOW 	VIP.GREEN..
for v in VIP.__members__: # YELLOW..class类
a=1
print(VIP(a)) # VIP.yellow
from enum import IntEnum
枚举的数值必须为整形,import unique
@unique
class VIP(IntEnum): # 数值唯一且为整形
# 枚举类型:23种设计模式中的单例模式,实例化没意义
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值