Python简介
- Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。
- Python是一种相当高级的语言。 代码少的代价是运行速度慢。
- 用Python可以做什么?可以做日常任务,比如自动备份你的MP3;可以做网站,很多著名的网站包括YouTube就是Python写的;可以做网络游戏的后台,很多在线游戏的后台都是Python开发的。总之就是能干很多很多事啦。
- Python当然也有不能干的事情,比如写操作系统,这个只能用C语言写;写手机应用,只能用Swift/Objective-C(针对iPhone)和Java(针对Android);写3D游戏,最好用C或C++。
- Python就为我们提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容,被形象地称作“内置电池(batteries
included)”。
第一个缺点就是运行速度慢,和C程序相比非常慢,因为Python是解释型语言,你的代码在执行时会一行一行地翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以很慢。而C程序是运行前直接编译成CPU能执行的机器码,所以非常快。
第二个缺点就是代码不能加密。如果要发布你的Python程序,实际上就是发布源代码,这一点跟C语言不同,C语言不用发布源代码,只需要把编译后的机器码(也就是你在Windows上常见的xxx.exe文件)发布出去。要从机器码反推出C代码是不可能的,所以,凡是编译型的语言,都没有这个问题,而解释型的语言,则必须把源码发布出去。
第一个Python程序
命令行模式提示符类似C:>
Python交互模式提示符是>>>
输入exit()并回车退出Python交互模式
在Python交互式模式下,可以直接输入代码,然后执行,并立刻得到结果。
在命令行模式下,可以直接运行.py文件。
使用文本编辑器
直接输入python进入交互模式,相当于启动了Python解释器,但是等待你一行一行地输入源代码,每输入一行就执行一行。
直接运行.py文件相当于启动了Python解释器,然后一次性把.py文件的源代码给执行了,你是没有机会以交互的方式输入源代码的。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
print('Hello, world')
输入和输出
name = input()
name = input('please enter your name: ')
print('hello,', name)
Python基础
以#开头的语句是注释
当语句以冒号:结尾时,缩进的语句视为代码块。
# print absolute value of an integer:
a = 100
if a >= 0:
print(a)
else:
print(-a)
当你重构代码时,粘贴过去的代码必须重新检查缩进是否正确。
Python程序是大小写敏感的
坚持使用4个空格的缩进
在文本编辑器中,需要设置把Tab自动转换为4个空格,确保不混用Tab和空格。
数据类型和变量
如果字符串内部既包含’又包含"怎么办?可以用转义字符\来标识,比如:
'I\'m \"OK\"!'
Python还允许用r’‘表示’'内部的字符串默认不转义
>>> print(r'\\\t\\')
\\\t\\
Python允许用’’’…’’'的格式表示多行内容
>>> print('''line1
... line2
... line3''')
line1
line2
line3
如果写成程序并存为.py文件,就是:
print('''line1
line2
line3''')
可以直接用True、False表示布尔值(请注意大小写)
布尔值可以用and、or和not运算。
空值用None表示
这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言
可以把一个变量a赋值给另一个变量b,这个操作实际上是把变量b指向变量a所指向的数据
在Python中,通常用全部大写的变量名表示常量
在Python中,有两种除法,一种除法是/:
>>> 10 / 3
3.3333333333333335
/除法计算结果是浮点数,即使是两个整数恰好整除,结果也是浮点数:
>>> 9 / 3
3.0
还有一种除法是//,称为地板除,两个整数的除法仍然是整数:
>>> 10 // 3
3
Python的整数没有大小限制.
Python的浮点数也没有大小限制,但是超出一定范围就直接表示为inf(无限大)。
字符串和编码
在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。
用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件
对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符:
>>> ord('A')
65
>>> ord('中')
20013
>>> chr(66)
'B'
>>> chr(25991)
'文'
要注意区分’ABC’和b’ABC’,前者是str,后者虽然内容显示得和前者一样,但bytes的每个字符都只占用一个字节。
以Unicode表示的str通过encode()方法可以编码为指定的bytes
反过来,如果我们从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把bytes变为str,就需要用decode()方法
如果bytes中只有一小部分无效的字节,可以传入errors='ignore’忽略错误的字节:
>>> b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore')
'中'
len()函数计算的是str的字符数,如果换成bytes,len()函数就计算字节数
>>> 'Hello, %s' % 'world'
'Hello, world'
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'
用%%来表示一个%