python学习

基础语法概念学习(第一部分):

1.基础入门学习语法

1.1基础知识的准备

python的代码编写一定要按照pep8的代码规范来。

python的变量修改值不是修改变量指向内存的值,而是重新开辟一个内存空间,把修改的值存入后,后重新把变量指向后修改的内存空间,之前的内存空间由python的垃圾回收机制释放(与C语言不同)

我在这里声明一下,函数和变量,都使用驼峰命名法进行命名,但是两者有区别:函数,方法等使用驼峰命名法的首部英文字母必须大写;但是变量的命名时,首部英文字母必须小写,(但是再定义类的时候,首部英文字母必须大写),再定义全局变量的时候,变量名后面可以加入_g进行区分(此条规则不强制规定 可以自行选择)。

1.2 四大基础数据类型

首先需要明确python里面有8大数据类型,再本小结中将详细介绍基础四大数据类型分别是:整形,浮点型,布尔,字符串。可以使用type(data)可以得到该数据的数据类型。但是注意一切的数据类型都是类(class)。

1.2.1 整形(int)

python中所有定义的整形变量都是int,有且只有一种数据类型。64位python并且最少一个整形变量需要24个字节,并且随着数据的增大,所占的字节也会增大,并且每次增量都是4个字节。32位python存一个整形变量最少需要12个字节,并且每次增量位2个字节。可以使用sys.getsizeof(data)这个函数获取变量的字节数。

print(sys.getsizeof(0))      #得到的值为24个字节
print(sys.getsizeof(1))      #得到的值为28个字节
1.2.2 浮点型(float)

python中定义的浮点数类型也只有一种float,64位python中定义的位8个字节的双精度浮点数(8个字节)(类似于C语言中的Double变量),32位python中定义的浮点数类型是4字节的单精度变量(类似于C语言中的float变量)。在64位python在,浮点数这个类所占的字节数是24个字节,因为其中不仅包括了存储的数据量,还有一些索引,指针等,在本文不做具体展开了,有需要的可以阅读python源码。浮点数所包含的有效数字位是17位小数精度。

print(sys.getsizeof(1.01)) 	#得到的字节长度位24个字节

如下列代码所演示的,这是python表示小数的另一种方式

print(2E3)         	#表示的值位200.0
print(3E-1)		    #表示的值位0.3

在一些特殊的领域,可以引入 decimal 模块,用来提高浮点数的精度

import decimal
a = decimal.Decimal("10.0")
b = decimal.Decimal("3")
print(a/b)      #输出的为:3.333333333333333333333333333
print(10/3)     #输出的为:3.3333333333333335		

但是在一些特殊的领域,不需要近似值,需要的是准确值的时候,也就是 decimal 也无法满足需求的时候,就可以使用 fractions 模块进行开发使用。在这里提醒一下,在实际的开发中,一定要注意数据的精度问题,尤其是对精度要求较高的项目中。

from fractions import Fraction
print(10/3)		 		   #输出的为:3.3333333333333335
print(Fraction(10,3))	    #输出的为:10/3
1.2.3 布尔(bool)

在python中bool的数据类型,只有两个值 True or False。布尔的数据类型主要用于条件分支语句的判断中(自我感觉最大的用处),布尔数据类型的值主要是通过比较表达式赋值,当然可以直接给值(一般是在初始化的时候进行初始化给值)。bool的数据类型所占的字节数也为28个字节(相当于整形变量1的字节长度)。

print( 2 == 1)  #这就是一个标准的比较表达式
temp = True     # True 和 False 是 python的两个关键字
print(sys.getsizeof(temp))	#输出的值: 28个字节
# 条件语句的用法 一个简单的小例子
if( 1 == 1)
	print("true")  #一定要注意在python中Ture和False的首字母是大写的
else
	print("false")

在python中所有的数据类型都有bool值,包括所有的表达式,各种数据类型。python中获取bool值,是通过一个隐藏的函数bool()函数实现的。

print( 1 == 2)    		#两者都输出的为False  1式为简单写法  2式才是本质实现
print(bool(1 == 2))

在python中所有的数据类型都有且只有一个零值。零值就是其bool值为False,其他的非零值的bool值都是Ture,还是通过bool(data)来求取该数据类型的bool值。

int_temp = 0  # 整形的零值
float_temp = 0.0  # 浮点的零值
str_temp = ""  # 字符串的零值
list_temp = []  # 列表的零值
dict_temp = {}  # 字典的零值
1.2.4 字符串(string)

字符串在计算机的使用:1. 文字展示 2.存储数据 3.信息传输。在python中,可以使用单引号或者双引号进行表示。在这里需要说明一个点就是,在python中没有一个真正意义上的多行注释,所谓的多行注释(使用三引号引起来的)本质上是一个多行的字符串,可以赋给一个变量,当赋给变量的时候就是一个字符串(可以多行输出),没有赋值给变量的时候就可以作为一个多行注释。

1.2.4.1 字符串的转义操作

python中的转义符用 / 这个符号来表示。说白了转义符的功能就是:(1) 将某些普通符号给予特殊的功能 (2) 将一些特殊功能的符号普通化。这里只介绍一些常用的转义字符,多了也记不住。

转义符表示的功能
\n表示换行
\表示反斜杠(常用于windows平台下的路径表示)
\t表示横向制表符
\b表示退格
\"\'表示双引号或单引号

字符串的格式化输出,我在这里介绍三种方法:

  1. 类似C语言的传统格式化方法:

    在字符串中使用 %s (表示字符串),%d (表示整形),%f(表示浮点型)等数据,需要在字符串中进行占位。具体的实现可以查看下列代码中的例子。

    name = "liverpool"
    age = 23
    height = 180.5
    print("我的名字是%s,我的年龄是%d,我的身高是%f" % (name, age, height))
    #输出:我的名字是liverpool,我的年龄是23,我的身高是180.500000
    
  2. 在python 3.6 后才出现,个人最推荐

    就是在字符串前面加入f,中间的变量值直接使用{}进行占位

    print(f"我的名字是{name},我的年龄是{age},我的身高是{height}")
    #输出:我的名字是liverpool,我的年龄是23,我的身高是180.5
    
  3. 使用format方法进行格式化字符串,个人较为推荐

    就是在字符串中的格式化变量使用{}进行占位,在字符串后面使用format方法,按照顺序填入相应的变量。

    print("我的名字是{},我的年龄是{},我的身高是{}".format(name, age, height))
    #输出:我的名字是liverpool,我的年龄是23,我的身高是180.5
    
1.2.4.2 字符串序列操作

首先我们需要给字符串归个类(为了更好的理解):字符串属于序列类型。所谓的序列:就是在一块可存放多个值的连续内存空间,按照一定的顺序排列,可以通过每个值所在的位置编号(索引)访问。注意:几乎所有的编程语言,索引编号都是总零开始。python不仅支持正索引,还支持负索引。

name_temp = "liverpool"
print(name_temp[0])    	#输出: l 这是第一个字母
print(name_temp[1])		#输出: i 这是第二个字母
print(name_temp[-2])	#输出: 0 这是倒数第二个字母

切片操作,可以取出一段连续的字符串,代码形式:字符串[开始索引位置:结束索引位置],切取的子字符串只包含开始索引位置的字符,不包含结束位置的字符。

print(name_temp[2:6])	#输出: verp 这是第二个字母
print(name_temp[6:])	#输出:ool 结束位置缺省 表示字符串直接取到末尾结束
print(name_temp[:2])	#输出:li  开始位置缺省 表示字符串从0索引位置开始截取

这里还有一个通过切片操作实现的小功能就是,翻转子字符串。

print(name_temp[2:6]) 		#正序输出:   verp 
print(name_temp[5:1:-1])	#负序输出:	prev
print(name_temp[::-1])		#相当于翻转字符串

本质上是切片操作:字符串[开始索引位置:结束索引位置:step = 1] 默认的步长是1,上述中只是把步长改成了 -1。正数表示从左到右取,负数表示从右到左取。注意一点:当开始索引位置 < 结束索引位置 ,但是步长使用的是负数,那么得到的字符串为空;同理可得,当开始索引位置 > 结束索引位置,步长使用的是正数,得到的字符串为空。如果想隔一个取一个,那么步长选为2,以此类推,这里不做过多的阐述了。

字符串的拼接,使用+进行拼接,格式:字符串1+字符串2。新拼接的字符串会开辟一个新的内存空间,不会改变原来的字符串内存空间的内容。注意一点:字符串拼接使用的+号,不能和数字混合使用。

name_1 = "liver"
name_2 = "pool"
print(name_1 + name_2)	#输出:liverpool

字符串的长度,可以使用解释器的内置函数len()对字符串的字符个数进行读取。但是这里需要区分字符数和字节数,python使用的是utf-8编码,英文字符占一个字节,中文字符占3个字节。

name_temp = "liverpool"
print(len(name_temp))				  #输出的是9
print(len(name_temp.encode("utf8")))   #输出的是9
name_temp_chinese = "利物浦"
print(len(name_temp_chinese))		#输出的是3	
print(len(name_temp_chinese.encode("utf8"))) #输出的是9

这里接收一个python一个关键字(in)的特性,广泛用在容器数据类型中,包括在字符串,列表等。这里一个简单的应用。查看子字符串是否在字符串中,在1.2.3中的布尔类型中提到,每一个表达式都有bool类型,所以可以进行判断。

name_temp = "liverpool"
print("liver" in name_temp)  #输出: True
print("ler" in name_temp)	#输出: False
1.2.4.3 字符串的内置方法
1.2.4.3.1 输入输出函数

input() 是输入函数,代码格式:变量 = input(”提示信息(不强制要求)“),得到的变量一定是字符串,如果输入的是数字并且想进行数字相关的操作,那么需要做数据类型转换。

my_name = input("请输入你的名字:")
my_age = input("请输入你的年龄:")
print(f"my name is {my_age},my age is {my_age}, next year age is {int(my_age) + 1}")
# 请输入你的名字:liverpool
# 请输入你的年龄:23
# my name is 23,my age is 23, next year age is 24

print()函数是输出函数,不同于其他的编程语言,python的print可以输出各种各样的数据类型,包括字符串,整型,浮点型,列表,集合,字典等数据类型,同时可以同时输出不同数据类型的变量

print(100, 180.5, 'liverpool', [1, 2, 3])
#输出: 100 180.5 liverpool [1, 2, 3]
#这是print的源码
def print(self, *args, sep=' ', end='\n', file=None): # known special case of print

sep可以改变连续输出变量的分隔符,end默认是换行,也可以自己修改,改变其值就可以

1.2.4.3.2 其他字符串内置方法

这里没有列出所有的字符串内置方法,只列出常用的。

方法作用示例输出
upper全部大写“liverpool”.upper()“LVIERPOOL”
lower全部小写“Liverpool”.lower()“liverpool”
startswitch(‘字符’)是否以该字符开头“liverpool”.startswich(l)True
endswitch(‘字符’)是否以该字符结尾‘liverpool’.endswith(‘pool’)True
isdigit()是否全部为数据”123“.isdigit()True
strip()去两边空格或换行符” liverpool “.strip()“liverpool”
join()将多个字符串拼接起来”-“.join([‘liverpool’,‘利物浦’])”liverpool-利物浦“
split()暗中某个字符进行分割,默认空格”liverpool-利物浦“.split(“-”)[“liverpool”,“利物浦”]
find()搜索指定字符串,没有就返回-1,有就返回第一个索引“liverpool”.find(“p”)5
index()“liverpool”.index(“p”)5
count()返回指定的字符串的出现的次数“liverpool”.count(“o”)2
replace()替换old为new“liverpool”.replace(“oo”,“yy”)“liverpyyl”
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值