Python基础

Python基础

  • #开头是注释
  • Python区分大小写
  • 注意缩进
  • :结尾时候,缩进的语句视为代码块

数据类型和变量

在Python中有的数据类型

整数

Python可以处理任意大小的整数,包括负整数,可以使用十进制,1111000,-8080,0

也可以用十六进制代表,加前缀ox,如oxff00,oxa5b3c3d2a

浮点数

也就是小数。

整数和浮点数在计算机内部存储的方式是不同的,整数永远都是精确的,而浮点数可能存在误差。

字符串

字符串是用单引号'或者双引号"括起来的任意文本,但是单引号和双引号本身就作为一个表达方式,不是字符串的一部分,因此如果单引号作为一个字符,可以用双引号将字符串括起来,如果单引号和双引号都使用了,可以使用转义字符\来表示。如:

'I\'m \"OK\"'

表达的内容就是I'm OK.

转义字符其他常用用法:

  • \n表示换行
  • \t代表制表符
  • \\代表\本身
>>> print('I\'m ok.')
I'm ok.
>>> print('I\'m learning\nPython.')
I'm learning
Python.
>>> print('\\\n\\')
\
\

Python为了简化还允许使用r''来表示''内的内容默认不转义:

>>> print('\\\t\\')
\   \
>>> print(r'\\\t\\')
\\\t\\

如果有很多换行,Python允许使用'''...'''格式来表示多行内容:

>>> print('''line1
... line2
... line3''')
line1
line2
line3

上面两个结合使用:

>>> print(r'''line
... line2\\\
... line3''')
line
line2\\\
line3
布尔值

在Python中布尔值只有True以及False两种值(注意大小写)。

>>> 3>2
True
>>> 2>3
False

布尔值可以用andor,和not运算。

空值

None表示,代表一个特殊的空值,不能理解为00是一个整数

变量

变量名规则,名字必须大小写英文、数字和_组合,不能数字开头:

  • a = 1,a是整数
  • t_007 = 'T_007',t_007是一个字符串
  • Answer = True,Answer是一个布尔值

在Python中=号是赋值语句,同一变量可以反复赋值,而且可以是不同类型的数据:

>>> a = 123
>>> print(a)
123
>>> a = 'ABC'
>>> print(a)
ABC

这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量的时候必须制定变量类型,如果赋值的时候类型不匹配就会报错,例如OC语言了。

理解a = 'ABC'——执行这句话的时候Python解释器做了两件事情:1.在内存中创建了一个'ABC'的字符串;2.在内存中创建了名为a的变量,并把它指向'ABC'

也可以将一个变量a赋值给另一个变量b,这个操作实际上是讲变量b指向变量a所指向的数据

>>> a = 'ABC'
>>> print(a)
ABC
>>> b = a
>>> print(b)
ABC
>>> a = 'CDE'
>>> print(b)
ABC
常量

常量就是不能改变的变量了,比如常用的数字常量π就是一个常量。在Python中,通常使用全部大写的变量名字来表示常量:

PI = 3.1415926359

可以看得出来Python根本上是没有常量这个概念的,就是说我们定义的PI仍然是一个变量。

补充:

说一下为什么Python中整数的除法是精确的。在Python中除法有两种:一种就是/:

>>> 10/3
3.3333333333333335

计算结果是浮点数,即使两个整数刚好除尽也是浮点:

>>> 9/3
3.0

还有一种就是地板除//,两个整数的除法是整数,采用去处余数的方式

>>> 10//3
3

还可以通过%运算符来求得两个数之间的余数

>>> 10 % 3
1

字符串和编码

字符串编码问题。。。。像之前的一样了,主要是ASCII、Unicode以及UTF-8编码的关系。

Python的字符串

在最新的Python3版本中,字符串是Unicode编码的,所以他支持所终语言:例如

>>> print('包含中文的str')
包含中文的str

对于单个字符编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符:

>>> ord('A')
65
>>> ord('中')
20013
>>> chr(66)
'B'
>>> chr(25555)
'揓'

如果知道字符的整数编码,还可以用十六进制这样写str:

>>> '\u4e2d\u6587'
'中文'

由于Python的字符串类型是str,在内存中以Unicode表示,一个字符对应多个字节,如果想要在网络上传输,或者保存到磁盘上,就要把str变为以字节为单位的bytes

Python对nytes类型的数据用带b前桌的单引号或者双引号表示:

>>> x = b'ADC'

注意区分'ABC'b'ABC'的区别,前者是str,后者是bytes每个字符只占用一个字节。

我们还可以通过Unicode表示的str通过encode()方法可以编码为指定的bytes,例如:

>>> 'ABC'.encode('ascii')
b'ABC'
>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'
>>> '中文'.encode('ascii')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

纯英文的str可以用ASCII编码为bytes,内容是一样的,含有中文的str同样可以用UTF-8编码为bytes。但是如果含有中文的str无法用ASCII编码,因为中文的编码范围超过了ASCII的编码范围,Python会报错。

bytes中,无法显示为ASCII字符的字节,用\x##来显示。

反过来,如果我们从网络上或者磁盘上读取了字节流,那么读取到的数据就是bytes。要把bytes变为str,就要用decode()方法:

>>> b'ABC'.decode('ASCII')
'ABC'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
'中文'

要计算str包含有多少个字符,可以用len()函数:

>>> len('ABC')
3
>>> len('中文')
2

len()函数计算的是str的字符数,如果换成bytes的话,len()函数计算的就是字节数了:

>>> len(b'ABC')
3
>>> len(b'\xe4\xb8\xad\xe6\x96\x87')
6
>>> len('中文'.encode('utf-8'))
6

由于在Python中,Python的源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码的时候,就需要制定保存为UTF-8编码,当Python解释器读取到源代码的时候,就会按UTF-8编码读取,我们通常在文件开头写上这两行:

#!/usr/bin/env Python3
# -*- coding: utf-8 -*-

第一行注释是告诉Linux/OS X系统,这是一个Python的可执行程序,Windows系统会忽略这个这个注释;

第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。

格式化

最后一个问题是如何输出格式化的字符串。我们会经常输出类似亲爱的xxx你好!你xx月的话费是xx,余额是xx之类的字符串,而xxx的内容都是可变的,所以需要一种渐变的格式化字符串的方式。

>>> 'hello,%s'%'world'
'hello,world'
>>> 'Hi ,%s you have $%d.' % ('Michael',10000)
'Hi ,Michael you have $10000.'

可以看到上面的%运算符就是用来格式化字符串的。在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%?就有几个变量或者只对应着,如果只有一个%?那么括号可以省略。

常见的占位符:

  • %d 整数
  • %f 浮点数
  • %s 字符串
  • %x 十六进制整数
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值