Python基础系列----语法、数据类型、变量、编码
基本语法
Python的语法比较简单,采用缩进的方式。
#print absolute value of an integer:
a = 100
if a >=0:print(a)else:print(-a)
View Code
在上面代码中,以‘# ’是注释的标识符,可以记录当前代码所代表的意义,解释器会自动忽略这部分内容。
当语句以‘:’结尾时,缩进语句视为代码块。
在Python中,通常我们以4个空格的缩进来进行区分。由于个人习惯原因,可以在每句结束之后加一个‘;’号。通常在Python中,默认以换行为新的一行,若想在一行输入多句语句,一定要加‘;’,否则报错。由于Python采用缩进的语法,在你复制,粘贴语句时,一定要注意,重新检查当前代码的缩进格式。IDE很难格式化代码。
注意:在Python中,对大小写十分敏感,如果大小写错误,会报错。
数据类型
数据类型:一个值的集合以及定义在这个值集上的一组操作
Python提供的基本数据类型主要有:布尔类型、整型、浮点型、字符串、空值、列表、元组、集合、字典等等。在这里主要介绍布尔类型、整型、浮点型、字符串、空值,其他的后续介绍。
布尔类型
在Python中,None、任何数值中的0、空字符串、空元组、空列表、空字典都被当做false,还要自定义的 方法返回0或者false,则其实例当做False,其他对象均为Ture。
>>>True
True>>>False
False>>>1>0
True>>>1>2False
View Code
布尔类型只有两个值,不是true,就是false。布尔值可以进行运算,主要包括and,or,not
a.and 与运算,只有所有都为true,返回结果为true
b.or 或运算,只要其中有一个为true,返回结果为true
c.not 是非运算,它是一个但亩运算符,把true变为false,false变为true
>>>True andTrue
True>>>True andFalse
False>>>False andFalse
False>>>True or False orTrue
True>>>notTrue
False>>>notFalse
True
View Code
整形
在Python内部对整数的处理分为普通整数和长整数,普通整数长度为机器位长,通常都是32位,超过这个范围的整数就自动当长整数处理,而长整数的范围几乎完全没限制。例如:1,2,-1,1000000
浮点型
Python的浮点数就是数学中的小数,类似C#语言中的double。在运算中,整数与浮点数运算的结果是浮点数,浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x109和12.3x108是相等的。整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的,而浮点数运算则可能会有四舍五入的误差。
字符串
Python字符串即可以用单引号也可以用双引号括起来,甚至还可以用三引号括起来。例如:‘abc’,"abc",'''I'm OK'''等。''或""本身只是一种表示方式,不是字符串的一部分。
如果字符串内部既包含'又包含",可以使用转义符\来标识。转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\\表示的字符就是\。
如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用r''表示''内部的字符串默认不转义.如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许用'''...'''的格式表示多行内容
空值
空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。
变量
变量名必须是大小写英文、数字和_的组合,且不能用数字开头.变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错
a = 'ABC'b=a
a= 'XYZ'
print(b)
执行a = 'ABC',解释器创建了字符串'ABC'和变量a,并把a指向'ABC':
执行b = a,解释器创建了变量b,并把b指向a指向的字符串'ABC':
执行a = 'XYZ',解释器创建了字符串'XYZ',并把a的指向改为'XYZ',但b并没有更改:
最后打印变量b,输出值为‘ABC’。
编码
在创建Python文件时,有些IDE会在文件最上方有这样一段代码
#-*- coding: UTF-8 -*-
这段代码表示,当前文件以utf-8的格式编码。有时,在浏览网页,或者打开文件时,发现全部是一堆看不懂的字符串,这就是乱码,也是由文件编码导致的。由于每个国家的语言不同,各国有各国的标准,如果多种语言的文本混合其中,这时就会导致乱码。因此为了将所有语言统一到一套编码规范中,产生了Unicode,这样就不会再存在乱码的情况了。 Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。现代操作系统和大多数编程语言都直接支持Unicode。在Python中,我们通常都需要指定当前文件具体的一种编码格式,避免后期产品乱码的情况。
ASCII编码和Unicode编码的区别:
ASCII编码是1个字节,而Unicode编码通常是2个字节。
字母A用ASCII编码是十进制的65,二进制的01000001;
字符0用ASCII编码是十进制的48,二进制的00110000,注意字符'0'和整数0是不同的;
汉字中已经超出了ASCII编码的范围,用Unicode编码是十进制的20013,二进制的01001110 00101101。
如果统一成Unicode编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。 所以,本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间
字符
ASCIIUnicodeUTF-8
A
01000001
00000000 01000001
01000001
中
x
01001110 00101101
11100100 10111000 10101101
计算机系统通用的字符编码工作方式: 在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。
在Python中, ord()函数获取字符的整数表示; chr()函数把编码转换为对应的字符。
>>> ord('A')65
>>> ord('中')20013
>>> chr(66)'B'
>>> chr(25991)'文'
由于Python的字符串类型是str,在内存中以Unicode表示,一个字符对应若干个字节。如果要在网络上传输,或者保存到磁盘上,就需要把str变为以字节为单位的bytes。对bytes类型的数据用带b前缀的单引号或双引号表示:x = b'ABC'。要注意区分'ABC'和b'ABC',前者是str,后者虽然内容显示得和前者一样,但bytes的每个字符都只占用一个字节
以Unicode表示的str通过encode()方法可以编码为指定的bytes。要把bytes变为str,就需要用decode()方法
>>> 'ABC'.encode('ascii')
b'ABC'
>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'
View Code
Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行。#!/usr/bin/env python3# -*- coding: utf-8 -*-。第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。
格式化
采用的格式化方式和C语言是一致的,用%实现。
>>> 'Hello, %s' % 'world''Hello, world'>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)'Hi, Michael, you have $1000000.'
%运算符就是用来格式化字符串的。在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略
常见占位符:%d(整数),%f(浮点数),%s(字符串),%x(十六进制整数)
格式化整数和浮点数还可以指定是否补0和整数与小数的位数
>>> '%2d-%02d' % (3, 1)'3-01'>>> '%.2f' % 3.1415926'3.14'
有些时候,字符串里面的%是一个普通字符,这个时候就需要转义,用%%来表示一个%
>>> 'growth rate: %d %%' % 7'growth rate: 7 %'
写在最后
以上就是Python的一些基本语法、数据类型、编码知识,有存在错误或不足的地方,及时沟通改正。下篇的时间可能要稍微朝后推迟了,周末需要去做个身体检查,也希望大家的身体棒棒的!