廖雪峰Python教程笔记(一)

1 教程&简介

完成同一个任务,C语言要写1000行代码,Java只需要写100行,而Python可能只要20行。

Python是一种相当高级的语言。

代码少的代价是运行速度慢,C程序运行1秒钟,Java程序可能需要2秒,而Python程序可能就需要10秒。

在非常高的抽象计算中,高级的Python程序设计也是非常难。

Python当然也有不能干的事情,比如写操作系统,这个只能用C语言写;写手机应用,只能用Swift/Objective-C(针对iPhone)和Java(针对Android);写3D游戏,最好用C或C++。

诞生:
Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。

全世界差不多有600多种编程语言,但流行的编程语言也就那么20来种。

Python是用来编写应用程序的高级编程语言。

当你用一种语言开始作真正的软件开发时,你除了编写代码外,还需要很多基本的已经写好的现成的东西,来帮助你加快开发进度。比如说,要编写一个电子邮件客户端,如果先从最底层开始编写网络协议相关的代码,那估计一年半载也开发不出来。高级编程语言通常都会提供一个比较完善的基础代码库,让你能直接调用,比如,针对电子邮件协议的SMTP库,针对桌面环境的GUI库,在这些已有的代码库的基础上开发,一个电子邮件客户端几天就能开发出来。

Python就为我们提供了非常完善的基础代码库、大量的第三方库。

那Python适合开发哪些类型的应用呢?

  • 首选是网络应用,包括网站、后台服务等等;

  • 其次是许多日常需要的小工具,包括系统管理员需要的脚本任务等等;

  • 另外就是把其他语言开发的程序再包装起来,方便使用。

Python的缺点:

  • 第一个缺点就是运行速度慢,和C程序相比非常慢,因为Python是解释型语言,你的代码在执行时会一行一行地翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以很慢。而C程序是运行前直接编译成CPU能执行的机器码,所以非常快。
  • 第二个缺点就是代码不能加密。如果要发布你的Python程序,实际上就是发布源代码,这一点跟C语言不同,C语言不用发布源代码,只需要把编译后的机器码(也就是你在Windows上常见的xxx.exe文件)发布出去。要从机器码反推出C代码是不可能的,所以,凡是编译型的语言,都没有这个问题,而解释型的语言,则必须把源码发布出去。
  • 等等

2 安装&python解释器

编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件。要运行代码,就需要Python解释器去执行.py文件。

由于整个Python语言从规范到解释器都是开源的,所以理论上,只要水平够高,任何人都可以编写Python解释器来执行Python代码(当然难度很大)。事实上,确实存在多种Python解释器

CPython
当我们从Python官方网站下载并安装好Python 3.x后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。CPython是使用最广的Python解释器。教程的所有代码也都在CPython下执行。

IPython
IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。

CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。

PyPy
PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。

绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。

Jython
Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。

IronPython
IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。

Python的解释器很多,但使用最广泛的还是CPython。如果要和Java或.Net平台交互,最好的办法不是用Jython或IronPython,而是通过网络调用来交互,确保各程序之间的独立性。

3 第一个python程序

命令行模式:它的提示符类似C:>:
Python交互模式:它的提示符是>>>。
在Python交互模式下输入exit()并回车,就退出了Python交互模式,并回到命令行模式。

让Python打印出指定的文字,可以用print()函数,然后把希望打印的文字用单引号或者双引号括起来,但不能混用单引号和双引号:

 print('hello, world')

hello, world

这种用单引号或者双引号括起来的文本在程序中叫字符串,今后我们还会经常遇到。

文本编辑器:
实际开发的时候,我们总是使用一个文本编辑器来写代码,写完了,保存为一个文件,这样,程序就可以反复运行

推荐两款文本编辑器:

  • 一个是Sublime Text,免费使用,但是不付费会弹出提示框:
  • 一个是Notepad++,免费使用,有中文界面:

绝对不能用Word和Windows自带的记事本。Word保存的不是纯文本文件,而记事本会自作聪明地在文件开始的地方加上几个特殊字符(UTF-8 BOM)

python hello.py 运行hello.py

小结
用文本编辑器写Python程序,然后保存为后缀为.py的文件,就可以用Python直接运行这个程序了。

Python的交互模式和直接运行.py文件有什么区别呢?

  • 直接输入python进入交互模式,相当于启动了Python解释器,但是等待你一行一行地输入源代码,每输入一行就执行一行。
  • 直接运行.py文件相当于启动了Python解释器,然后一次性把.py文件的源代码给执行了,你是没有机会以交互的方式输入源代码的。
    用Python开发程序,完全可以一边在文本编辑器里写代码,一边开一个交互式命令窗口,在写代码的过程中,把部分代码粘到命令行去验证,事半功倍!前提是得有个27’的超大显示器!

输入输出

输出:用print()在括号中加上字符串,就可以向屏幕上输出指定的文字。
在这里插入图片描述
在这里插入图片描述
输入:Python提供了一个input(),可以让用户输入字符串,并存放到一个变量里
在这里插入图片描述
直接输入name查看变量内容:
在这里插入图片描述

input()可以让你显示一个字符串来提示用户
在这里插入图片描述
作业:
在这里插入图片描述

4 python基础

Python是一种计算机编程语言。计算机编程语言和我们日常使用的自然语言有所不同,最大的区别:
自然语言在不同的语境下有不同的理解,而计算机要根据编程语言执行任务,就必须保证编程语言写出的程序决不能有歧义

编译器或者解释器就是负责把符合语法的程序代码转换成CPU能够执行的机器码,然后执行。

Python的语法比较简单,采用缩进方式
以#开头的语句是注释,注释是给人看的,可以是任意内容,解释器会忽略掉注释。
其他每一行都是一个语句,当语句以冒号:结尾时,缩进的语句视为代码块。
按照约定俗成的管理,应该始终坚持使用4个空格的缩进

缩进的另一个好处是强迫你写出缩进较少的代码,你会倾向于把一段很长的代码拆分成若干函数,从而得到缩进较少的代码。

缩进的坏处就是“复制-粘贴”功能失效了,这是最坑爹的地方。当你重构代码时,粘贴过去的代码必须重新检查缩进是否正确。此外,IDE很难像格式化Java代码那样格式化Python代码。

Python程序是大小写敏感的,如果写错了大小写,程序会报错。

在文本编辑器中,需要设置把Tab自动转换为4个空格,确保不混用Tab和空格。

数据类型和变量:
处理文本、图形、音频、视频、网页等各种各样的数据,不同的数据,需要定义不同的数据类型。

在Python中,能够直接处理的数据类型有以下几种:

  • 整数 直接写100,-20。计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0x前缀和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,等等。
  • 浮点数:称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的。用科学计数法表示,把10用e替代。
  • 整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差。
  • 字符串:字符串是以单引号’或双引号"括起来的任意文本,比如’abc’,“xyz"等等。’'或”“本身只是一种表示方式,不是字符串的一部分,如果’本身也是一个字符,那就可以用”"括起来,比如"I’m OK"包含I,’,m,空格,O,K这6个字符。

如果字符串内部既包含’又包含"怎么办?可以用转义字符\来标识,比如:
在这里插入图片描述
转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\表示的字符就是
在这里插入图片描述
Python还允许用r’‘表示’‘内部的字符串默认不转义:
在这里插入图片描述
Python允许用’’’…’’'的格式表示多行内容
在这里插入图片描述

  • 布尔值;一个布尔值只有True、False两种值,要么是True,要么是False,在Python中,可以直接用True、False表示布尔值(请注意大小写)
    在这里插入图片描述
    布尔值可以用and、or和not运算。
    在这里插入图片描述
    布尔值经常用在条件判断中,比如:
    在这里插入图片描述
  • 空值: 是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。
  • 变量: 变量不仅可以是数字,还可以是任意数据类型。变量在程序中就是用一个变量名表示了,变量名必须是大小写英文、数字和_的组合,且不能用数字开头.
    在这里插入图片描述
    动态语言:变量本身类型不固定
    静态语言:在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错:在这里插入图片描述

!赋值语句的等号bu等同于数学的等号.

理解变量在计算机内存中的表示也非常重要:
在这里插入图片描述
Python解释器干了两件事情:

  1. 在内存中创建了一个’ABC’的字符串;

  2. 在内存中创建了一个名为a的变量,并把它指向’ABC’。

  • 常量:所谓常量就是不能变的变量,比如常用的数学常数π就是一个常量。在Python中,通常用全部大写的变量名表示常量
    除法:
    在这里插入图片描述
    在这里插入图片描述

整数的地板除//永远是整数,即使除不尽。要做精确的除法,使用/就可以。因为//除法只取结果的整数部分。余数运算为%。

Python支持多种数据类型,在计算机内部,可以把任何数据都看成一个“对象”,而变量就是在程序中用来指向这些数据对象的,对变量赋值就是把数据和变量给关联起来。

对变量赋值x = y是把变量x指向真正的对象,该对象是变量y所指向的。随后对变量y的赋值不影响变量x的指向。

注意:Python的整数没有大小限制,而某些语言的整数根据其存储长度是有大小限制的,例如Java对32位整数的范围限制在-2147483648-2147483647。

Python的浮点数也没有大小限制,但是超出一定范围就直接表示为inf(无限大)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值