Python学习笔记

Python学习笔记



  • [x] 2016/2/4 0.10:Python基础 数据字符串和变量
  • [x] 2016/2/4 13.21:Python基础 使用dict和set
  • [x] 2016/2/5 20.44:Python基础 递归函数

Python是一种计算机程序设计语言=高级语言≠简单

1、Python简介

作者:**Guido van Rossum** 时间:**1989年圣诞期间**
  1. Python提供了非常完善的基础代码库
  2. 含有大量的第三方库
  3. 优雅 明确 简单写尽量少容易看明白的代码
**适合开发的应用**: 网络应用(网站,后台服务); 日常小工具(脚步任务); **缺点**: 1. 解释型语言,和C语言相比,速度慢 2. 代码不能加密,发布python程序=发布源码

2、安装Python

  • 官网下载
  • 勾上Add Python 3.5 to PATH,点击Install Now
  • 默认安装到c:\Python35目录下

安装成功后打开命令行输入Python,出现>>>,表示我们已经在python的开发环境中,输入python代码后回车执行,exit()回车/关闭命令行窗口退出Python来开发环境

安装失败则需要手动将python.exe添加到环境变量Path当中
图片来自廖雪峰

安装成功

Python解释器

解释器:执行.py为扩展名的Python代码

常见的解释器:

  • CPython:C语言开发,官方解释器,也是命令行输入Python启动的解释器。
  • IPython:基于Cpython之上的一个交互式解释器
  • PyPy:提高执行速度,和CPthon有所不同
  • Jython:运行在java平台
  • IronPython:运行在.Net平台

3、第一个Python程序

在命令行的状态下直接输入代码,获得运行结果,但是无法保存代码

  1. 在交互环境下(>>>)输入代码,回车执行
  2. 实用print()函数打印字符串,可以使用单引号双引号,但是不能混用
  3. exit()退出Python

使用文本编辑器

使用文本编辑器可以保存代码,并且随时执行,在命令行使用Python 文件名.py的形式执行,会一次性的执行所有源码,不会像有在命令行状态下交互式输入代码的机会,不要使用word记事本

输入和输出

输出:使用print()函数可以打印字符串,整数,多个字符串以逗号隔开,python会将逗号转换为空格
输入:使用input()函数实现输入,输入的数据赋值给变量,直接写变量名或者print(变量名)都可以输出我们刚刚输入的内容,input(‘xxx’)函数中可以写一些字符作为提示信息

4、Python基础

Python语法较为简单,采用缩进方式,每一行都是一句代码,末尾冒号:表示之后的缩进语句为一个代码块,#号开头为注释,解释器会忽略掉注释。

按照约定俗成的管理,应该始终坚持使用4个空格的缩进

缩进会强迫你写出格式化的代码
缩进会强迫你写出较少缩进的代码,多采用函数
缩进会导致复制粘贴失效非常坑爹
Python程序大小写敏感

数据类型和变量

  • 整数
  • 浮点数
  • 字符串,转移字符\,r’‘中的字符串默认不转义,”’…”’表示多行内容
  • 布尔值False,True
  • 空值 None不同于0
  • 变量,字符数字下划线,不能以数字开头,动态语言
  • 常量 不能变的变量,以大写字母表示,实际上可以变

字符串和编码

编码占位说明
ASCII1个字节英文
GB23122个字节中国
Unicode2个字节Python内部
UTF-81-6个字节推荐使用withoutBOM

格式化与c语言类似,采用%

使用list和tuple

  • list列表:可以随时添加和删除内部的元素
  • append(),insert(),pop(),pop(i)
  • list可以包含不容的数据类型,可以包含list

  • tuple:元组,初始化后不可改变
  • tuple:声明一个元素的元组,需要用逗号标识
  • tuple:可以在元组内部包含list,通过改变list的元素,来实现元组元素的改变

条件判断

计算机之所以能做很多自动化的任务,因为它可以自己做条件判断。

if,else语句,elif=else if;
注意不要忘记冒号:用法与java类似
input默认输入的是str类型,需要自行转化

a=input('请输入你的身高')
height=float(a)
b=input('请输入你的体重')
weight=float(b)

bmi=weight/(height*height)
print('你的BMI是%f'%bmi)
if bmi<18.5:
    print('过轻')
elif bmi<25:
    print('正常')
elif bmi<28:
    print('过重')
elif bmi<32:
    print('肥胖')
else:
    print('严重肥胖')

循环

  • for循环 for x in xxx
L=['Bart','Lisa','Adam']
for x in L:
    print('Hello,%s!'%x)
  • while循环
L=['Bart','Lisa','Adam']
m=len(L)
n=0
while n<m:
    print('Hello,%s!'%L[n])
    n=n+1

使用dict和set

Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。


dict的key必须是不可变对象
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。要创建一个set,需要提供一个list作为输入集合:


对于不可变对象来说,调用自身的方法只是创建了一个新的对象并返回,本身没有被改变

5、函数

调用函数

函数名是一个引用,指向函数对象,万物皆对象?
函数名可以复制给变量,相当于给函数起了一个别名

定义函数

使用def来定义函数,依次输入def, 函数名,括号,参数,冒号,缩进代码块,return返回结果,没有return则代码结束后返回None


可以使用from xxx import my(params)来导入自定义的函数,xxx为py文件的名字


空函数,函数体使用pass语句,可以表示一个占位符,也可以用在if语句中,缺少pass会出现语法错误,个人认为直接写return?有什么区别呢


对函数参数进行检查类型异常处理


函数可以返回多个值,其实返回的是一个元组,按照位置赋值给各个变量


import math
def a(a,b,c):
    for x in(a,b,c):
        if not isinstance(x,(int,float)):
            raise TypeError('类型错误!')
    if a==0:
        return 0-c/b

    d=math.sqrt(b*b*1.0-4*a*c)
    return (0-b+d)/(2*a),(0-b-d)/(a*2)

函数的参数

位置参数默认参数可变参数关键字参数命名关键字参数组合
power(x,y)power(x,y=2)power(*x)power(**kw)power(*,x,y)
必选参数在前,默认参数在后,默认参数为不可变对象list,tupledict限制关键字参数的名字

递归函数

递归函数逻辑清晰但是容易导入栈溢出,如果有对尾递归优化过的语言,可以使用尾递归来解决栈溢出的问题

def move (n,a,b,c):
    if n==1:
        print(a,'->',c)
    else:
        move(n-1,a,c,b)
        move(1,a,b,c)
        move(n-1,b,a,c)

6、高级特性

7、函数式编程

8、模块

9、面向对象编程

10、面向对象高级编程

11、错误、调试和测试

12、IO编程

13、进程和线程

14、正则表达式

15、常用内建模块

16、常用第三方模块

17、Virtualenv

18、图形界面

19、网络编程

20、电子邮件

21、访问数据库

22、Web开发

23、异步IO

24、实战

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值