#!/usr/bin/env python3#-*- encoding: utf-8 -*-
print('Hello world')print('中国心')
python程序本质是脚本语言,与shell相同,都是顺序逐条语句执行,语句执行完成后退出。没有main函数。
00.python程序格式
#开头的语句是注释,其他每一行都是一个语句。
语句以冒号(:)结尾时,缩进的语句视为代码块(没有C语言中{}区分代码块)。
约定俗称,4个空格缩进,Tab或空格均可以,但要保持一致。
python大小写敏感。
0.unicode&utf-8
在计算机内存中,统一使用unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为utf-8编码。
用记事本编辑的时候,从文件读取的utf-8字符被转换为unicode字符到内存里,编码完成保存时再把unicode转换为utf-8保存到文件。
浏览网页时,服务器会把动态生成的unicode内容转换为utf-8再传输给浏览器,所以会看到许多网页的源码上会有类似的信息,表示该网页正是用的utf-8编码。
1. 除法
Python中有两种除法,一种除法是/,/除法计算结果永远是浮点数。
地板除//,计算结果永远是整数。
余数运算%。
无论整数做//除法还是取余数,结果永远是整数,所以,整数运算结果永远是精确的。
2. 布尔值类型
布尔值类型只有Truce、False两种值(注意Python大小写敏感)。
布尔值可以用and,or,和not运算。
3. 空值
空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。
4. 常量
在Python中,通常用全部大写的变量名表示常量。
5. bytes类型
Python对bytes类型的数据用带b前缀的单引号或双引号表示:
x=b'ABC'
要注意区分'ABC'和b'ABC',前者是str,后者虽然内容显示得和前者一样,但bytes的每个字符都只占用一个字节。
纯英文的str可以用ASCII编码为bytes,内容是一样的,含有中文的str可以用UTF-8编码为bytes。含有中文的str无法用ASCII编码,因为中文编码的范围超过了ASCII编码的范围,Python会报错。
在bytes中,无法显示为ASCII字符的字节,用\x##显示。
b''(b前缀):每个字节占用一个字节。print(b'A\tA') ---b'A\tA'
u''(u前缀)或无前缀:字符串默认以Unicode编码存储,可以存储中文。Unicode中每个字符占用两个字节。print(u'A\tA') ---A A
r''(r前缀):主要解决转义字符、特殊字符问题,其中所有字符均被视为普通字符。print(r'A\tA')--A\tA
6. str和bytes转换
由于Python的字符串类型是str,在内存中以unicode表示,一个字符对应若干个字节。如果要在网络上传输,或者保存到磁盘上,就需要把str变为以字节为单位的bytes。以unicode表示的str通过encode()方法可以编码为指定的bytes;反过来,从网络或磁盘上读取了字节流,读取到的数据是bytes,用decode()将bytes变为str。
在操作字符串时,我们经常遇到str和bytes的互相转换。为了避免乱码问题,应当始终坚持使用UTF-8编码对str和bytes进行转换。
>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')'中文'
>>> '33345'.encode('utf-8')
b'33345'
>>> '中8'.encode('utf-8')
b'\xe4\xb8\xad8'
>>> b'\xe4\xb8\xad8'.decode('ascii')
Traceback (most recent call last):
File"", line 1, in UnicodeDecodeError:'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)
>>> b'\xe4\xb8\xad8'.decode('utf-8')'中8'
7. 输入输出
输入用input(),输出用print()。
input()可以输入提示字符串,input()返回的数据类型是str,str不能直接和整数比较。
>>> name=input('please enter your name:')
please