python基础
一:变量
变量:描述世间万物变化的状态
如:年龄随着时间而增长
变量的组成:
变量名(描述;接收变量值) 赋值符号("=",把变量值传给变量名) 变量值(具体值)
height = '180'
变量名的规范:
1.变量名必须要有描述的意义
2.变量名有数字/字母/下划线组成,且不能以数字开头
3.不能以关键字命名
''' ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield'] '''
定义变量的两种方式:
1.下划线式(建议使用)
name_of_nick = 'nick'
2.驼峰体
NameOfJason = 'jason'
print(name_of_nick) # 先定义才能使用,没有引号的就是变量名
变量的三种打印形式
print(age) #打印值 print(id(age)) #打印内存地址 print(type(age)) #打印数据类型
二:常量
不变化的量(变量明全大写)
不变化是约定俗成的
AGE = 1
三:python内存管理
- 引用计数(针对变量):变量值的引用次数
引用计数(变量值):变量值的引用次数加1,则引用计数加12
age = 1000 # 1000的引用计数为1
age1 = 1000 # 1000的引用计数为2
del age #delete删除age,1000的引用计数为1
del age1 #delete删除age1,1000的引用计数为0
垃圾回收机制:当一个变量的引用计数为0的时候,会触发垃圾回收机制,改变量值会被回收
小整数池:
age = 10
print(id(age))
age1= age
print(id(age1))
'''
1.[-5,256]之间的整数会在Python解释器启动的时候,自动开辟一块内存存入这些整数.也就是说这些整数不会因为引用计数为0而被删除
2.变量名用来接收变量值
3.定义变量就要开辟新的内存空间
Python实现int的时候有个小整数池。为了避免因创建相同的值而重复申请内存空间所带来的效率问题, Python解释器会在启动时创建出小整数池,范围是[-5,256],该范围内的小整数对象是全局解释器范围内被重复使用,永远不会被垃圾回收机制回收。
另外创建变量的值如果相同的话,创建的时间间隔又比较短,那么他们的内存空间的值是相同的。
在pycharm中运行python程序时,pycharm出于对性能的考虑,会扩大小整数池的范围,其他的字符串等不可变类型也都包含在内一便采用相同的方式处理了,我们只需要记住这是一种优化机制,至于范围到底多大,无需细究
'''
四:什么是数据类型
对变量值做了分类,不同的类别对应不同的数据类型,如姓名可能是一种数据类型、年龄可能是一种数据类型、爱好可能又是另一种数据类型
每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建
整型(int):
作用:表示人的年龄、各种号码、级别
使用方法:+ - / * % // **
# 定义方式 age = 18 print(id(age)) print(type(age)) print(age)
浮点型(flot):
作用:表示身高、体重、薪资
使用方法: + - / * % //
# 定义方式: salary= 2.1 print(id(salary)) print(type(salary)) print(salary)
字符串(str):
作用:用于描述如姓名,单个爱好,性别
使用方法:字符串只能+,*和逻辑比较
# 定义方式: name = 'nick' name1 = "nick's" # 碰到第一个双引号,字符串类型,碰到第二双引号 namme2 = ''' adaf agsgssf ''' #换行定义 # 使用方法: str1 = 'nick' str2 = 'beautiful' print(str1 + str2) print(str1 * 10) ''' 字符串的拼接,即重新申请一个小空间把两个字符串都拷贝一份后再拼接。而不是你YY的把一个小空间内的变量值复制到另一个变量的小空间内,然后拼接。 '''
列表(list)
作用:存放多个值,如女朋友,多个爱好
使用方法:存不是目的,取才是目的,通过索引取值,索引序列好从0开始
hobby_list = ['read','run','girl'] # 索引序列号 0 1 2 # 取出第二个爱好 print(bobby_list[1])
定义:
hobby = 'read' bobby_list = [hobby,'run','girl'] print(hobby_list)
字典
作用:用来存取多个值,按照key:value的方式存值,取的时候可以通过key而非索引去取值,key对value具有描述性作用。存放数据的种类各种各样并且数据较多的时候可以使用字典。
定义:
user_info = {'name':'baba','gender':'male','age':18, 'company_info':['beijin','shanghai',50]} print(use_info)
如何使用:
# 字典嵌套列表 user_info = {'name':'baba','gender':'male','age':18, 'company_info':['beijin','shanghai',50]} print(user_info['name']) print(user_info['compant'][1]) # 字典嵌套字典 user_info = {'name':'baba','gender':'male','age':18, 'company_info':{'cidy':'shanghai',50}} print(user_info['company_info']['cidy'])
布尔值
作用:用于判断跳进结果
定义:True,False通常情况下不回直接引用,需要使用逻辑运算得到结果。
使用方法:
print(type(true)) print(true) <class 'bool'> true print(bool(0)) # false print(bool('nick')) # true print(bool(1>2)) # false print(bool(1==)) # true # 注意:python中所有数据类型的值自带布尔值。只要记住0,none,空,false的布尔值为false,其余的为true。
五:注释
- 单行注释
- 除了解释,还会让代码失效
- 多行注释用'''
六:与用户交互
与用户交互(用户说一句,计算机(python程序)答一句)
用input来表示:输入的都是字符串形式
s = input('请输入你的身高:')
七:解压缩
解(解开)压缩(容器类数据类型):只针对2-3个元素容器类型的解压
lt = [1, 2, 3, 4, 5]
print(lt[1],lt[2],lt[3])
s1,s2,s3,s4,s5 =lt
print(s1,s2,s3,s4,s5)
# 单个下划线表示这个东西不需要(约定俗成)
# s1,_,_,_,_ = lt
# print(s1)
# print(_) # 可以打印,但是不要去打印
# *_: *把后面的元素全部合成放到列表里去了(自己描述,你描述的就是真理)
# s1,*_,s5 = lt
# print(s1)
# print(_)
八:格式化输出
占位符
%s接收任意数据类型的数据
%d接收数字类型的数据name = 'nick' 'nick name is %s'%name
format格式化
讲真,很鸡肋的格式化的方法,如果你需要使用这个,遇到多参数的时候,还是需要在句子后面噼里啪啦传上一大堆参数。使用这个不如用占位符或下面的f-String格式化。
name = 'nick' age = 19 print("Hello, {}. You are {}.".format(name, age))
f-string格式化
name = "nick" age = 19 print(f"Hello, {name}. You are {age}.")