Python学习笔记

参考资料:
[1] 廖雪峰的Python教程

Python基础

数据类型和变量

整数

0x表示十六进制前缀。
- 10/3表示结果是整数部分,10.0/3结果就是浮点数,10%3表示取余
- int(x,base=2) N进制转换

字符串

  1. 'abc'
  2. 如果’也是字符,则用”“括起来
  3. 如果字符串内部既包含’又包含”,可以用转义字符\来标识。'I\'m \"OK\"!'
  4. 转义字符: \n表示换行,\t表示制表符,字符\本身也要转义,所以\ \表示的字符就是\,如果字符串里有很多字符都需要转义,就需要很多\,为了简化,用r' '表示”内部的字符串默认不转义
  5. raw_input('')读取的是字符串
  6. replace('','')改变字符串中的字符

bool值

只有TrueFalse两种值(注意大小写),常用在条件判断中
- and:只有True and True =True
- or:有一个为True,结果就为True
- not:取反

空值

None是一个特殊的值,不能理解为0,因为0是有意义的,而None是一个特殊的空值

变量

a=123这种称为动态语言,因为没有确定变量的数据类型,而int a =123则是静态语言

常量

在Python中,通常用全部大写的变量名表示常量

字符串和编码

编码

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

我们通常在文件开头写这两行,第一行是为了告诉Linux/OS X系统,这是一个Python可执行程序,而Windos则会忽略掉该注释,第二行是告诉编辑器,按照UTF-8编码读取源代码

格式化

  • %d 整数
  • %f 浮点数
  • %s 字符串
  • %x 十六进制整数
  • %.2f 指定保留小数点位数的浮点数
  • %10s 指定占位符宽度
  • %-10s 指定占位符宽度(左对齐)

使用list和tuple

list

  • len() 取list元素个数
  • array[0] 用索引来访问每一个位置的元素,注意索引是从0开始
  • array[-1] 表示最后一个元素
  • array[-2] 表示倒数第二个元素
  • array[-3] 表示倒数第三个元素
  • array.append() 表示在末尾加上元素
  • array.insert(1,'') 表示在索引为1的位置插入元素
  • array.pop() 表示删除末尾的元素
  • array.pop(1) 删除指定索引位置的元素
  • list里面嵌套list,可以用array1[i][j]来访问第二层的元素

tuple

array=()
两边是圆括弧,一旦初始化就不能更改
t=(1)表示1,并不是tuple,
要想消除歧义,t=(1,)

条件判断和循环

条件判断

if ...:
elif ...:
elif ...:
else:

if 判断条件还可以简写,if x,只要x是非零数值】非空字符串、非空list,就判断为True

循环

  1. for in 依次把list或tuple中的每个元素迭代出来
    • for x in ... 就是把每个元素代入变量x进行操作
    • range(x),生成的是从0开始小于5的整数
  2. while 只要条件满足就不断循环

dict和set

dict 以key-value形式存放

d={'m':1,'n':2}
>>>d['m']
1

由于一个key只能对应一个value,多次对一个key放入value,后面的值会把前面的值冲掉

set 仅是key的集合,可以看成无序和无重复元素的集合

s=set([1,2,3])
重复元素在set中自动被过滤
s.add(key)添加元素
s.remove(key)删除元素
- 交集操作 &
- 并集操作 |

函数

调用函数

1.调用函数时,如果输入参数数量不对,会有TypeError报错:**() takes exactly one argument(2 given)
2.如果参数类型错误,也会TypeError: bad operand type for **(): ‘str’
3.函数名实际就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个别名
a=abs

定义函数

def myfunction(x):
  ...
return

1.执行到return,函数就执行完毕,并将结果返回
2.如果美誉return,函数执行完毕也会返回结果,结果是None
3.return None 可以简写为return

空函数

def nop():
  pass
  ```
pass语句什么都不做,作为占位符,比如还没想好写什么,可以先放个pass,让代码能运行起来。
###参数检查
对于定义的函数,如果参数个数不对,Python可以检查出来,但是如果参数类型不对,就无法检查出来,在定义函数时,可以用内置函数`isinstance`
``` python
def myfunction(x):
  if not isinstance(x,(int,float)):
    raise TypeError('bad operand type')




<div class="se-preview-section-delimiter"></div>

返回多个值

实质上是返回一个tuple,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值

函数的参数

默认参数

def power(x,n=2):
>>>power(5,2) right
>>>power(5) right




<div class="se-preview-section-delimiter"></div>

默认参数可以简化函数的调用
注意:
- 必须参数在前,默认参数在后
- 设置时把变化大的参数放前面,变化小的参数就可以设为默认参数
- 默认参数必须指向不变对象(如:str,None),如:不能是list

可变参数

calc(*num)在list或tuplr前面加一个*,把list或tuple的元素变成可变参数传进去

关键字参数

**参数,具有扩展函数的功能,除了必选参数,还能输入其他参数

参数组合

  • 参数定义的顺序:必选、默认、可变、关键字

递归函数

递归次数过多会出现栈溢出

高级特性

切片

取list中的前n个元素:l[0:3],表示从索引0开始取,到索引3为止,但不包括索引3,如果第一个索引是0,还可以省略为l[:3]
- 倒数切片:l[-2:] 从倒数第二个开始取到最后
- 切片步伐:[0:10:2]每两个取一个

迭代

dict的迭代

for value in d.itervalues()迭代value
for k,v in d.iteritems() 迭代key和value

可迭代对象的判断

>>>from collections import Iterable
>>>isinstance('abc',Iterable)
True




<div class="se-preview-section-delimiter"></div>

对list实现下标循环

>>>for i,value in enumerate(['a','b','c']):




<div class="se-preview-section-delimiter"></div>

列表生成式

[x*x for x in range(1,11)]
[x*x fo x in range(1,11) if x%2==0]
[m+n for m in 'ABC' for n in "XYZ']

生成器generator

只需将列表生成式的[]改为()
- 一个一个打印 next()
- 一般使用循环
如果一个函数把 print 改成yield,那就变成了generator

函数式编程

高阶函数

  • map(f,list) 依次作用
  • reduce(f, list) 依次累加
  • filter(f, list)将f作用于每个元素,根据返回值的True False来决定是否保留该元素
  • sorted():升序, sorted(list,f)按照f来排序

返回函数

函数的返回值也可以是函数

匿名函数

lambda

装饰器

在代码运行期间动态增加功能
- name属性:可以拿到函数的名字

偏函数

把一个函数的某些参数给固定住,返回一个新的函数
functools.partial

面向对象编程

-在Python中,实例的变量名如果以__开头,就变成了private

继承和多态

  • 继承class Dog(Cat):
  • 多态 Dog的实例c的数据类型既是Dog也是Cat

常用

  • slots用来限制属性
  • str 打印实例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值