Python学习笔记

1.Python

1)版本

Python分为两个版本:2.X版本和3.X版本,两版本之间不兼容

2)安装

安装时需勾选【Add Python 3.7 to PATH】
在cmd窗口输入 python能正确执行即可
.py文件为python代码

3)Python解释器

CPython(自带)、IPython、PyPy、Jython(Java用)、IronPython(.net用)
exit()、quit():退出Python交互界面(cmd)

4)Python交互

交互界面(cmd)无法运行其py文件,需到cmd窗口运行:Python Xxx.py
运行py文件,其代码需要有print(Xxx),否则在控制台无结果输出
支持多个字符串,用逗号分隔;会自动拼接,逗号之间会有空格
用户交互界面,支持用户输入值存储到变量

>>>name = input()
Micheal
----
>>>name
'Micheal'

表示注释;Python是注意大小写的

Python基础知识

1)if语句:
a = 100
if a >= 100:
	print(a)
else
	print(-a)

Python要求Table为4个空格/4个空格进行缩进

数据类型
Python支持整数、浮点数、字符串、布尔值(可只是True、False,可结合or、and、not)、空值(使用None表示)
Python除了支持转义字符,还支持【r’’】便是【’’】内部的字符串默认不转义,该方式支持换行

支持’’’…’’'表示多行内容

print('''line1
...line2
...line3''')

Python是动态语言
可将任意数据类型复制给变量,Java是静态语言,静态语言要求赋值需要类型匹配,否则报错

  • /:除法运算,获得浮点数
  • //:地板除,获得其商数的整数
  • %:取除法的余数
#!/usr/bin/env python3
# -*- coding: utf-8 -*-	

第一行则是告知Linux/OS X系统,windows会忽略
第二行则是告知Python解释器,按照UTF-8编码读取代码

在Python中,采用的格式化方式与C一致,使用’%'实现

>>> 'Hello, %s' % 'world'

占位符 替换内容
%d 整数
%f 浮点数
%s 字符串
%x 十六进制整数
%% 表示一个%

使用format()函数格式

print('Hello, {0}, 成绩提升了{1:.1f}%'.format('John',17.125))
2)List和tuple
  1. List可理解为有序的集合
>>>classmates = ['1','2','3']

List与Java同理,索引从0开始,否则会报越界
取最后一个元素,可用【-1】作为索引,同理-2,-3等等。如同倒序取值

  • List.append(Element e)
    追加元素到末尾
  • List.insert(int index, Element e)
    追加指定元素到指定位置
  • List.pop()
    移除末尾元素
  • List.pop(int Index)
    移除指定位置的元素

替换与Java同理
List为[]的话。len(List)为0,

  1. tuple可理解为数组,一旦初始化不能修改
>>>classmates = ('Michael', 'Bob', 'Tracy')

获取值与List一致
定义空tuple

t = ()

定义一个元素(使用下列是为了区别划分)

t = (1,)
3)条件判断(支持if、if-else、if-elif-else)
age = 20
if age >= 18:
	print('your age is', age)
	print('adult')
else:
   print('your age is', age)
   print('teenager')
----
if x:
	print('True')

x为非零数值、非空字符串、非空List就会判断为True,否则为False

输入input()
返回值为str,需要捕获运行期的异常

4)循环:
  1. for-in循环,依次取集合中的元素迭代
names = ['Michael', 'Bob', 'Tracy']
for name in names:
	print(name)

range(int number)函数,生成整数序列,即[0,number)
即使用list(range(5)),获得一个集合

for x in range(101):
	//循环步骤
  1. while循环
sum = 0
n = 100
while n > 0:
	sum = sum + n
	n = n - 1

break:跳出本循环
continue:跳过本次循环

5)dict

全程为dictionary,在其他语言中成为map,key-value形式

>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}

如果key不存在,则dict会报错d['Tom']

  1. 通过in判断key是否存在
dujgeResult = 'Tom' in d
if dujgeResult:
    print('Test')
print(dujgeResult)
  1. 通过dict提供的get()方法,不设定默认值返回None,若设定返回设定值
    result = d.get('Tom') result = d.get('Tome', -1)

移除元素与List一致

  1. dict与List的区别
    1. dict查找、插入速度极快,不会随着key的增加而变慢;List的查找和插入花费的时间随着元素的增加而增加
    2. dic需要占用大量内存,内存浪费多;List占用空间小,即浪费内存很少
      dict的key是不可变对象
6)set:会自行排序的集合,等同Java

会自动过滤重复元素
添加元素 add(key)
移除元素 remove(key)
注意,set原理与dict一样,不可放入可变对象
list的排序 sort()

数据类型转换
int(agre)、float(agre)、str(agre)、bool(agre)

函数的定义:

def 函数名(参数):
	//函数体
	return 指定值	#若无会默认返回None,且return None可以简写为return

引用其他py的函数
from 函数所在的py文件名 import 函数名
例子:>>>from homework import my_abs
空函数:

def nop():
	pass

上述pass用作占位符,先存放让其代码运行起来
函数内对参数类型校验抛错

def test_a(x):
	if not isinstance (x, (int,float)):			#内置函数isinstance()
		raise TypeError('bad operand type')
	...

返回多个值:实际返回一个tuple值,存放在其中,按其所位置赋给对应的值
import math #表示导入math包
函数的参数默认值设定:

def power(x, n=2):
	s = 1
	while n > 0:
		n = n - 1
		s = s * x
	return s

设定函数入参的默认值需注意:
必选参数在前,默认参数灾后
定义默认参数时,默认参数必须指向不变参数
函数的参数为可变参数,参数前加入*

def calc(*numbers):
	//函数体
也可以传递集合进去
nums = [1, 2, 3]
calc(*nums)	#即将list的所有元素作为可变参数传递

关键字参数:可变参数允许传入0或任意个参数,在函数调用时自动组装为tuple;而关键字参数类似,只是组装为dict

def person(name, age, **kw):
	//函数体

关键字参数的调用类似可变参数调用
命名关键参数:即加入了if 'job' in kw:判断存在

def person(name, age, *, city, job):
    print(name, age, city, job)

和关键字参数**kw不同,命名关键字参数要*这个特殊分隔符,后面的参数视为命名关键字参数
如果函数定义中已有一个可变参数,则后面跟着的命名关键字不需该特殊分隔符
调用时必须有对应的变量名
person('Jack', 24, *, city='Beijing', job='Engineer')
*args是可变参数,接收的是一个tuple
**kw是关键字参数,kw接收的是一个dict

3.高级特性:

  1. 切片(Slice)操作符:
    取前三个元素
    L = [‘Michael’, ‘Sarah’, ‘Tracy’, ‘Bob’, ‘Jack’]
    print(L[0:3])
    即从索引0开始取直到索引为3位置,[0,3)的方式
    print(L[:3]) #等价上面的
    取后面的数
    print(L[-3:])
    每两个取一个
    print(L[:5:2)
    直接复制一个list
    print(L[:])
    tuple、字符串也支持
  2. 迭代
    Python的迭代(Iteration)不仅可以用在list或tuple上,还可以作用在其他可迭代对象中
    dict对象:
    for value in values()
    for k,v in items()
    判断一个对象是否可迭代,调用collections模板的Iterable类型判断
    isinstance(‘abc’, Iterable) #整数不可以迭代
    Python内置enumerate函数:
    for index, value in enumerate([‘A’, ‘B’, ‘C’])
    for x, y in [(1, 1), (2, 4), (3, 9)]
    –> 1 1 2 4 3 9
  3. 列表生成式
    要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11))
    如果生成[1X1, 2x1, …, 10X10]
    [x * x for x in range(1, 11)]
    将要生成的元素x * x放到前面,后面跟for循环也可以追加if 判断或多层循环
    要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    print(‘list=’, list(range(1, 11)))
    生成[1x1, 2x2, 3x3, …, 10x10]
    print(‘list=’, list(x * x for x in range(1, 11)))
    追加if判断
    print(‘list=’, list(x * x for x in range(1, 11) if x % 2 == 0))
    多层循环
    print(‘list=’, list(m + n for m in ‘ABC’ for n in ‘XYZ’))
  4. 生成器
    列表生成器的[]换为’()'即可
    取值next(g),一个个取值;该对象是可迭代对象
    yield会返回该值且会中断,下次调用时从此处开始
  5. 迭代器
    将list、dict、str等Iterable变为Iterator使用iter()函数
  • 凡是可作用于for循环的对象都是Iteratable类型
  • 凡是可作用于next()函数的对象都是Iteraotr类型,表示一个惰性计算序列
  • 集合数据类型如list、dict、str等是Iterable,而不是Iterator;Python的for循环本质是不断调用next()函数实现
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值