Python教程

Python基础知识(一)

本文主要是介绍Python基础知识(一),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录
  • python注释语法
  • 代码规范
  • 变量
  • 常量
  • python底层优化
  • 垃圾回收机制
  • 数据类型
  • 与用户交互
  • 格式化输出
  • 运算符
  • 流程控制

python注释语法

# 注释是代码之母
1.注视就是对代码的解释,不参与程序的运行
2.如何使用注释
	方式1:使用#
	方式2:多行注释  '''多行注释'''
	方式3:快捷键 control+?

代码规范

PEP8规范

变量

# 什么是变量?
	即为变化的量,用于记录事务的某种状态

# 如何使用变量
	日常生活中:
		姓名:alan
		年龄:18
		爱好:学习
	程序中:
		username = "alan"
		age = 18
		hobby = "learn"
	语法格式
		变量名 赋值符号 变量值
		复制顺序:从右往左读取
	底层原理(内存中)***
		1.在内存空间中申请一块内存空间 存储 数据
		2.将18所在的内存空间地址绑定给变量名
		3.之后如果访问数据 就通过变量名访问即可

# 命名规范
	1.变量名只能由数字、字母、下划线任意组合
	2.不能以数字开头,尽量不要用下划线开头(下划线有特殊含义)
	3.变量名不能跟关键字冲突
	4.变量名的命名一定要做到见名知意

# 命名风格
	1.驼峰体  JavaScript推荐使用
		大驼峰
			UserNameFormDb
		小驼峰
			userNameFormDb
	2.下划线  python推荐使用
		user_name_from_db

# 变量三要素
	1.变量的值value
	2.变量的内存地址  print(id(name))  一串数字相当于内存地址编号
	3.变量的类型  print(type(name))

常量

# 主要用于记录一些不变的状态
在python中没有真正意义上的常量 墨守成规的将全大写的变量看成常量,在其他编程语言中,定义了常量之后就不能修改了
	HOST = "127.0.0.1"

# 一般在配置文件中用的比较多

python底层优化

小整数池:
	0-255
python解释器有、pycharm中也有

同一个内存空间由多个变量名指向;但是一个变量名只能指向一个内存地址

===》当数据很小的时候,就会进行优化,数据大的时候就不行了

垃圾回收机制

# 垃圾的定义
	没有变量名指向的数据称之为垃圾

# 针对垃圾数据,python开发了一套自动化回收方案
	1.引用计数
		引用:
		计数:
		===》内存上数据所在的内存地址被引用的次数
	2.标记清除
		当内存即将占满的时候,python回自动暂停程序的执行 从头到尾将内存中数据进行扫描
		并打上标记 之后一次性清除掉标记的数据
	3.分代回收
		通常有三代:青春代、中年代、老年代
		将数据的监管分为三个层次,随着层级的下降监督的频率降低

数据类型

# 什么是数据类型
	在现实生活中存储数据的方式和表现形式
		文本文件、表格文件、视频文件、音频文件、图片文件。。。
	在程序中存储数据的方式和表现形式
		int、float、str、dict、list、set、bool、class、function

# 整形 int
	age = 18
	类型转换:
		res = '123'  ===> res = int(res)  # 只能转化纯数字(整数)
	进制数转换
		bin(100)  # 将十进制的100转为二进制  0b1100100	int("0b1100100", 2) <=> 100
		oct(100)  # 将十进制的100转为八进制  0o144		int("0o144", 8) <=> 100
		hex(100)  # 将十进制的100转为十六进制  0x64		int("0x64", 16) <=> 100

# 浮点型 float
	prince = 99.9
	类型转换
		res = '123.123'  ===> res = float(res)

===》"""整形和浮点型统称为数字类型"""

# 字符串 str
	name = "alan"
	定义方式:
		单引号、双引号、三引号(单三引、双三引)
	内置方法:
		类型转换
			str(res)  # res可以为任意类型数据
		索引取值
			res[0]
		切片操作
			res[1: 4]  # 顾头不顾尾
			res[1: 10: 2]  # 顾头不顾尾,第三个参数为步长
			支持负数
				res[::-1]  # 取反  改变取值方向
		统计字符串内的字符个数
			len(res)
		成员运算
		移除字符串首尾特定字符
			res.strip()  # 如果不指定字符,默认移除首尾空格
			lstrip()  # 右移
			rstrip()  # 左移
		按照指定的字符切割字符
			res.split("|")  # 该方法的结果是一个列表
			res.split("|", maxsplit=1)  # maxsplit用于控制切割次数
			res.lsplit("|")  # 右切
			res.rsplit("|")  # 左切
		字母全小写、字母全大写
			lower()、upper()
			'''实际案例:图片验证码忽略大小写'''
			isupper()  # 判断是否为全大写
			islower()  # 判断是否为全小写
		判断字符串是否以指定的字符开头、以什么什么结尾
			res.startswith("alan")
			res.endswith("18")
		格式化输出format
			res = 'my name in {}'
				res.format("alan")
			res = 'my name in {0},{0}'
				res.format("alan")  # 大括号内写索引值,打破顺序,并且可以反复使用相同位置的数据
			res = 'my name in {name},{age}'
				res.format(name="alan",age=18)  # 大括号内可以指名道姓的要
		字符串的拼接
			方式一:字符串相加
			方式二:join方法
				l = ["alan", "tom"]
				"l".join(l)  # 注意l必须全为字符串类型数据
		替换字符串中指定字符replace
			res.replace("__old: str", "__new: str", count=num)  # 第三个参数默认全选
		判断字符串中是否纯数字isdigit
			res.isdigit()
		字体格式相关
			res.title()  # 所有英语单词首字母大写
			res.capitalize()  # 开头英语单词大写
			res.swapcase()  # 大小写转换
		查找索引
			res.find("alan")  # 从左往右,查找指定字符索引值("a"),找到一个即结束,找不到返回-1
			res.index("w")  # 找不到会报错
		统计某个字符出现的次数
			res.count("alan")
		填充相关
			res.center(15, "$")  # 将res居中展示,并且用指定字符填充
			res.ljust(15, "$")  # 左对齐
			res.rjust(15, "$")  # 左对齐
		判断字符串中既可以包含数字也可以包含字母
			isalnum()
		判断字符串中只包含字母
			isalpha()


# 列表 list
	names_list = ["alan", "tom", "pake"]
	作用:能够存储多个数据,数据可以为任意类型的数据,并方便取出存储的数据
	索引取值:name_lists[0] ===》 "alan"

# 字典 dict
	user_info = {"name": "alan", "age": 18, "hobby": "learn"}
	作用:精确地存储数据,知道存储的数据表示什么意思
	特点:K通常为字符串,起到描述V的作用,为不可变
	基于哈希取值,不能索引取值,需要使用K

# 布尔值 bool
	作用:用于判断事务的对错  是否可行
	定义:布尔值只有两种状态,python中都是大写
		True
		False	0, None, "", [], {}...	对应为False
	ps:针对布尔值的变量名,一般采用is开头

# 元组 tuple
	作用类比于列表(可以看成不可变的列表)
	t = (11 ,22, 33, 44, 55)
	元素不支持修改

# 集合 set
	作用:去重和关系运算
	s = {11, 22, 33, 44}
	定义空集合:
		res = set()

与用户交互

  • 输入
    input('请输入您的用户名>>>:')

    input获取的输入信息全都转换为字符串

  • 输出
    print()

    print参数默认后面有个"\n",可以用end修改:print(123, end="\n")

格式化输出

# 定义:
	将字符串中的某些内容替换掉再输出,就是格式化输出

# 使用
	占位符
		%s:可以给任意数据占位
		%d:只能给数字占位	print('%08d' %123)  # 00000123
	format( )
		res = "名字为{},年龄为{}"
		print(res.format('alan', 18))

运算符

算术运算符:
	+-*/	加减乘除
	**	幂运算
	%	取余
	//	取整
比较运算符:
	== 	# 判断值是否相等
	!=	# 值不等于
	is	# 判断内存地址是否相等
赋值运算符
	赋值
		=
	增量赋值
		n += 1  <=>  n = n + 1  # +=、-=、*=、/=
	链式赋值
		x = y = z = 666
	交叉赋值
		m = 1
		n = 2
		m, n = n, m
	解压赋值
		names_list = ["alan", "tom"]
		user_1, user_2 = names_list  # 注意事项:左右两侧个数要对应上
		user_1, *_ = names_list  # *可以接受多余的元素,赋值给后面的变量名
逻辑运算符
	定义:与或非
		and、or、not
	优先级:
		not > and > or
成员运算
	定义:
		判断某个个体是否在某个群体中
	关键词:in、not in
		返回的是bool值
身份运算
	定义:
		判断两个数据 值和内存地址是否相等

流程控制

# 流程控制即控制事务的执行流程
	任何使用执行流程的结构可以分为三种
		1.顺序结构
			自上而下依次运行
		2.分支结构
			在运行过程中根据条件不同可能会执行不同的流程
		3.循环结构
			在运行过程有些代码需要反复执行
			
# 分支结构
	关键字:if
		'''
		if 条件1:
			条件成立之后执行的子代码块
		elif 条件2:
			条件成立之后执行的子代码块
		else:
			其他

		1.条件都会转化为布尔值 从而决定子代码是否执行
		2.在python中 使用缩进来表示代码的从属关系
		3.并不是所有别的代码都可以拥有子代码
		4.同属于某个代码的多行子代码 必须保持相同的缩进量 python默认4个空格
		'''
	嵌套:
	if a > 1:
		if a < 100:
			print("合法")

# 循环结构
	while循环
		条件
		break:结束本层循环
		continue:结束本次循环,eg:打印0-10的数字,但是需要跳过6
		标志位的使用:将条件换为flag,直接控制标志位进而控制多层循环
		while  + else:
			while循环正常结束下,会走else里的子代码;当break结束循环下,不会执行else里的子代码
		死循环
	for循环
		遍历取值
		for循环字典的key
		range(6) <=> [0, 1, 2, 3, 4, 5]  # 从0开始,顾头不顾尾
			range(4, 10)  # 从4开始,顾头不顾尾
			range(2, 10, 2)  # 第三个参数控制步长
			ps:range关键字在python2中为列表;在python3中是一个迭代器(节省存储空间),相当于python2中的xrange。
		break:结束本层循环
		continue:结束本次循环
		else:在for循环正常结束的情况下,才会执行
		循环嵌套
这篇关于Python基础知识(一)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!