Python学习笔记综合

2023-11-17

一、安装和学习建议
1、使用的2.7
2、环境变量+python的根目录
3、cmd就可以运行,执行使用 python xxx.py
4、编写代码可以直接python进入代码编辑
5、exit()退出编辑环境

安装与学习建议:pycharm专业版+anaconda,最好一步到位在Ubuntu系统上直接,方便后续开发和学习

Ubuntu 20.04安装 Anaconda和Pycharm

Anaconda之conda常用命令介绍(安装、更新、删除)

Pycharm中的Python Console与Terminal

其中,Python Console叫做Python控制台,即Python交互模式;Terminal叫做终端,即命令行模式。

Python交互模式主要有两种:CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。

Python交互式模式可以直接输入代码,然后执行,并立刻得到结果,因此Python交互模式主要是为了调试Python代码用的。

命令行模式与系统的CMD(命令提示符)一样,可以运行各种系统命令。

二、代码
1、#注释
2、print
a = ‘xxx’ print a
print r’xxx/nxxx’ 不会转义
print ”’xxxxxxxx”’ 多行,不加r会转义
print u’中文’ 但是本地似乎没有这个问题
浮点 print 10/4 打印为2; 10%3 打印为1; 10.0/4 打印为2.5
3、运算符 True or False True and False 是短路的
4、list集合a = [‘yes’, True, 100] 集合使用中括号,元素越多速度越慢

   a.append()          #加末尾
      a.insert(0, 'no')   #加指定位置 
      print a[0]        #访问第一个
      print a[-2]        #访问倒数第二个
      a.pop()            #删除最后一个,并且返回这个元素
      a.pop(1)          #删除索引为1的元素
      a[1] = 'new'      #赋值

5、元组 tuple 不可变list,使用小括号,注意单参数需要加一个逗号

t = (1,2,3) #不可变,没有append、insert、pop方法,也不能赋值
t = (1,) #单个参数需要加一个逗号

6、

if
age = 20
if age > 18:
    print 'xxxx'
    print age
else:
    print 'xxxx'
#非
if not age > 18:
#嵌套
if xxx:
    123
elif xxx:
    123
elif xxx:
    123
    123
else:
    123

7、for/while循环

for
a = [1,2,3]
for name in a:
    print name


while
N = 10
x = 0
while x < N:
    print x
    x = x + 1

退出循环(继续循环continue也一样)

N = 100
x = 0
sum = 0
while x < N :
    print x
    x = x + 1
    sum = sum + x
    if x == 50 :
        break
print sum
print x

双重循环

for x in ['a', 'b', 'c']:
    for y in ['1', '2', '3']:
        print x + y

8、dict 相当于java的map,定义是用大括号
优势:速度很快,多少个元素都一样的速度
过没有顺序,存进去的顺序和打印的顺序不一定一样
key不可变,并且存入的key是不可变的,所以list不能做key

d = {"one" : 1, "two" : 2}
print len(d)

访问使用 d[key] 或者 d.get(key)
#1、不存在会报错

d = {"one" : 1, "two" : 2}
if 'one' in d :
    print d['one']
else :
    print 'defalut'

#2、
print d.get('three')      #展示none
print d.get('one')        #正常展示

更新dict

d["one"] = 4

遍历dict

for name in d:
    print name

9、set
和java的set一样,同list不重复,只能存入不可变的对象,所以不能存list

l = [1,2,3,3,3,3]
print l
s = set(l)
print s
s1 = set([1,2,3,4,5,6,6])
print s1

访问set,其实就是判断它是否在set里,因为没有顺序并且不重复

print 1 in s  #打印True  大小写区分

set遍历

s = set([1,2,3,4,5])
for name in s:
    print name

添加元素使用add,删除使用remove。 add重复不报错,remove会报错,需要先判断

s = set([1,2,3])
s.add(7)
for name in s:
    print name

三、函数
使用help(函数)来查看详情
1、绝对值: abs(number)
2、比较:cmp(x, y) x
3、转整数:int(xxx)
4、转字符串:str(xxx)
5、总和:sum(list) list必须都是数值

l = [1,2,3,4,5]
print sum(l)

6、编写函数

def myMethod(x):
      if x > 0:
        return x
      else:
        return;
print myMethod(1)
print myMethod(-2)

7、返回多值,其实是返回一个tuple

def myMethod(x,y):
    return x + y, x - y
x, y = myMethod(1, 2)
print x
print y

print myMethod(1, 2)

t = myMethod(1, 2)
print t[0]

8、递归,知道但是什么时候用把握不好

def fact(n):
    if n == 1:
        return 1;
    else :
        return n * fact(n-1)

print fact(1)
print fact(10)

9、定义默认参数

def fn(i, n = 2):
… # n如果不传则默认是2,顺序必须是先必须参数再默认参数

10、定义可变参数
def fn(*suibian):

11、平均数函数例子

def average(*i):
    x = 0
    for num in i:
        x = x + num
    print x / len(i)

average(1,2,3)

12、对list进行切片,取前三个参数。0~3不包括3,0可以省略。也一样可以使用倒数

l = [1,2,3,4,5,6]
print l[0:3]
print l[:3]
print l[:]       #从头到尾复制一个新的list
print l[::2]      #每隔2个取一个值
print l[-3:]     #从倒数第三个开始取

13、字符串切片,同上
14、’abc’.upper() 变大写
首字母大写案例:

def up(s):
    print s[0:1].upper() + s[1:]

up('abckdf')

15、迭代 就是for循环,python可以迭代一切可以迭代的东西
数7的案例:

def seven(num):
    s = 0
    while s < num :
        if s % 7 == 0 :
            print s
        s = s + 1

def shou(str):
    for letter in str:
        print letter

seven(100)

shou('asdgdfgdfg')

16、拿到元素索引 enumerate()

for index, name in enumerate(["one", "two"]):
    print str(index) + name

17、迭代dict的value

d = {"one" : 1, "two" : 2}
print d.values()
for v in d.values():          #还要生成一个list,不过好记忆
    print v

for v in d.itervalues():         #省下生成list的过程,速度快
    print v

key和value都迭代遍历
d = {"one" : 1, "two" : 2}
for k, v in d.items():
    print k,' : ',v

18、生成列表,python主要处理数据,所以列表会经常生成
乘法口诀表案例:

L = []
for x in range(1, 11):
    L.append(x * x)
print L

print [x * x for x in range(1,11)]
#输出:[1,4,9,16,25,36,49,64,81,100]

print [x * x for x in range(1,11) if x % 2 == 0]   #只想要偶数的平方
range(1, 10, 2)  输出 [1,3,5,7,9]

19、生成一个table的html

d = {"Adam": 95, 'Lisa' : 85, 'Bart' : 59}
tds = ['<tr><td>%s</td><td>%s</td></tr>'%(name, score)
 for name, score in d.iteritems()]
print '<table>'
print '<tr><th>Name</th><th>Score</th></tr>'
print '\n'.join(tds)
print '</table>'

join 把一个list拼接成一个字符串。eg:

l = ['1','2','3']
s = 't'
print s.join(l)
#打印: 1t2t3t

20、多层表达式

print [m + n for m in 'ABC' for n in '123']
#打印:['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']

21、身份运算符is和==区别

	is比较身份,==赋值

22、私有属性和方法

	——变量,在对象的方法内部,是可以访问对象的私有属性,而在外界不能够被直接访问
	私有方法也不能被外界直接访问
	
	伪私有,在Python中只是在名称前加—,不过我们一般不会轻易窥探别人的隐私

23、继承

	子类拥有父类的所有的属性和方法   class Dog(Animal)  派生,基类
	继承具有传递性
	面向对象三大特性:封装、继承、多态
	覆盖父类的方法 子类重新定义
	对父类的方法扩展  super
	如果不小心调用子类时,会出现递归现象,死循环
	子类不能在自己的方法内部,直接访问父类的私有属性和方法
	子类可以通过父类的公有方法间接访问到私有属性和私有方法
	尽量避免多继承
	MRO 方法搜索顺序
	object是Python为所有对象提供的基类,提供有一些内置的属性和方法,可以使用dir函数查看
	建议定义类时,如果没有父类,建议统一继承自object

24、多态

	不同的子类对象调用相同的父类方法,产生不同的执行结果
	多态可以增加代码的,灵活度

25、类的结构

	实例
	1.使用面向对象开发,第一步是设计类
	2.使用类名创建对象,创建对象的动作有两步:
		1)在内存中为对象分配空间
		2)调用初始化方法——init__为对象初始化
	3.对象创建后,内存中就有了一个对象的实实在在的存在的--实例

26、类是一个特殊的对象

	1.类属性
	2.类方法
	通过类名的方式可以访问类的属性和调用类的方法
	类下方使用赋值语句    类属性获取:类名.类属性

27、类方法

	@classmethod
	def 类方法名(cls):
  		pass
  		
	静态方法
	@staticmethod
	def 静态方法名():
		pass

28、单例设计模式

	返回唯一内存地址
	__new__方法      创建对象时,new方法会被自动调用,为对象分配空间,返回对象的引用

语法错误 syntax error
无效 invalid
indent 缩进
python2.x不支持中文 3.x支持
使用python3.x解释器 $ python3 xxx.py
直接交互shell 好用的 ipython /3 退出exit() Ctrl+D
控制台字体 console font
注释 单行 # 多行“"”
取整除 //
幂 **
python拼接字符串 “—”*100
在python中定义变量时是不需要指定变量的类型的,python在运行时自动识别类型
在ipython中查看变量类型用 type(name)
在python中数字型变量之间可以直接计算,其中真为1,假为0
输入并赋值给变量 password = input(“请输入”)
类型转换函数 int(x) float(x)
变量格式化输出 print(“我的学号是 %06d”% no) %被称为格式化操作符 %s 字符串 %d 有符号十进制数,其中%06d表示共6位前面补0 %f 浮点数,其中%.2f表示控制小数位数 %% 输出%
变量的命名 标识符 关键字 keyword
在python开发中,不要tab和空格混用
一行程序太长 可以用()来换行 if(()or())
导入工具包 import random(随机数)
循环 row(行) col(列)
print函数 自动换行 增加 end="" 不会换行 保证每一步程序正确,再进行下一步
转义字符 \t 制表符 \n 换行符 " \r 回车
pycharm的调试工具 F8 Stop over 把函数看做一行代码 F7 stop into 会进入函数内部
函数 封装代码 引用函数名 函数注释 函数下方 三对引号
函数里面传递参数的使用 num(num1,num2)
形参和实参

代码结构示意图 sheban import模块 全局变量 函数定义 执行代码
变量下方有虚线 表明局部变量和全局变量重名了 全局变量gl_ or g_

赋值 a,b=b,a
赋值,使用 +=,变量和列表,在函数不一样,变量是对值进行赋值,而列表是追加列表
.sort()升序排序

函数缺省参数定义 print_info(name,gender=Ture):

多值参数 *nums指存放元组,**nums指存放字典

元组和字典的拆包

函数的递归,自己调用自己

面向对象 需求分析
类名,大驼峰命名法 属性,方法

dir内置函数

对初始化方法改造 init 在方法内部使用 self.属性 = 形参 接收外部传递的参数 在创建对象时,使用 类名(属性1,属性2…)调用
del 如果希望在对象被销毁前,再做一些事情,可以考虑一下__del__方法
生命周期 使用__del__后 内部属性结束

str 方法定制变量输出信息 必须返回字符串

封装特性和需求分析 面向对象编程的 第一步 将属性和方法封装到一个抽象的类中
需求 提出需求名词 动词

被使用的类先开发

python 能够自动的将一对小括号内部的代码连接在一起

调用父类 super().XXX

捕获异常 try: except: 错误类型 未知错误 exception as result

异常传递 一层层传递异常 可以利用异常捕获

主动抛出异常 raise 创建一个exception对象,主动raise异常

模块 模块别名 as
from 模块名 import 工具名 from XXX import * (导入所有)不推荐 出现错误不好排查

内置属性 ——file——可以查看当前模块的完整路径

在导入文件时,文件中所有没有任何缩进的代码都会被执行一遍!

——name—— 是Python的一个内置属性,记录着一个字符串

包pkg 包含多个模块的特殊目录,有个特殊文件——init——.py,命名规则和变量一致
要在外界使用包中的模块,需要在__init__.py中指定对外界提供的模块列表,from . import XXX

制作发布压缩包步骤
1.创建setup.py
2.构建模块 Python3 setup.py build
3.生成发布压缩包 Python3 setup.py sdist
安装和卸载(删除)

pip安装第三方模块 sudo pip/pip3 install XXX

对文件操作r,w,a 只读、写、追加;r+ 打开文件file=open(‘‘xxx’’,“w”) 写入文件 fil.write("")

复制大文件 一行行读、写

在Python中,对文件和目录常见操作,import os os.listdir os.mkdir os.rmdir os.getcwd获取当前路径 os.chdir修改工作目录 os.path.isdir判断是否是文件

Python2中使用中文 添加 #- coding:utf8 - 带中文的字符串,引号前面的u告诉解释器这是一个utf8编码格式的字符串 eg: txt=u"hello 世界"

eval函数 可以将字符串当成有效的表达式来求值,并返回计算结果 不要滥用eval函数 直接转换用户input字符串

pygame游戏开发——飞机大战

在调用父类的子类时,不是object,需要初始化父类方法
使用常量代替固定数值,常量所有的字母都大写

vi编辑器

打开文件 vi 文件名 + 行数
进入命令模式,切换到编辑模式(i),切换到末行模式(:)
末行模式/编辑模式,切换到命令模式(esc)
末行模式输入wq/x,保存文件并退出,w,q,q!

w:向后移动一个单词,b:向前移动一个单词
0:行首,^:行首,第一个不是空白字符的位置
$:行位

1.行数移动:gg文件顶部,G文件末尾,数字gg/G,:数字

2.屏幕移动:Crtl+b向上翻页,Ctrl+f向下翻页,H屏幕顶部,M,L

3.移动(程序)
1)段落移动 {上一段,}下一段
2)括号切换%,在程序中括号是成对出现的,(),{},【】
3)标记m+字母,返回’+字母

4.选中文本(可视模式)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python学习笔记综合 的相关文章

随机推荐

  • MyBatis之枚举类型

    枚举可以让代码变得更为优雅 B格更高 当然MyBatis也是支持枚举类型的啦 首先 MyBatis内置了Enum的TypeHandler TypeHandler Java类型 JDBC类型 EnumTypeHandler Enum VARC
  • 华为机试练习(二)二叉树遍历

    题目描述 给定一棵二叉树的前序遍历和中序遍历 求其后序遍历 输入 两个字符串 其长度n均小于等于26 第一行为前序遍历 第二行为中序遍历 二叉树中的结点名称以大写字母表示 A B C 最多26个结点 输出 输入样例可能有多组 对于每组测试样
  • NodeJs模块化

    目录 一 导入模块 二 模块暴露数据 三 注意事项 一 导入模块 在模块中使用 require 传入文件路径即可引入文件 const test require me js 案例 在func js中定义一个函数 在index js使用该函数
  • kube-flannel.yml

    flannel作为k8s的集群中常用的网络组件 其yml文件的获取 建议去github中获取 具体的获取方式如下 apiVersion policy v1beta1 kind PodSecurityPolicy metadata name
  • C#实现组合优化问题算法-背包问题(附源码)

    C 实现组合优化问题算法 背包问题 附源码 背包问题是一类经典的组合优化问题 也是NP完全问题中的一种 其基本思想是 有一个容量为V的背包和n个物品 每个物品有自己的体积和价值 在保证不超过背包容量的前提下 选择某些物品装入背包 使得背包中
  • 依赖项注入

    ASP NET Core 通过依赖关系注入 DI 生成 服务 如数据库上下文 在 Program cs 中向 DI 注册 这些服务通过构造函数参数提供给需要它们的组件 在 Controllers MoviesController cs 文件
  • rsyslogd、syslog远程传输、日志存储、转存

    一 产生本地日志 1 etc resolv conf 配置文件 local0 local7是用户自定义的日志 这里我们使用local1 添加以下 local1 www admin admin log web log 配置完需要重启 rsys
  • DNS 解析一个地址的时候会返回多个 IP 吗?

    这是一个或许对你有用的社群 一对一交流 面试小册 简历优化 求职解惑 欢迎加入 芋道快速开发平台 知识星球 下面是星球提供的部分资料 项目实战 视频 从书中学 往事上 练 互联网高频面试题 面朝简历学习 春暖花开 架构 x 系统设计 摧枯拉
  • nginx php-fpm 分别安装在不同的机器(理解nginx和php-fpm)

    先起一个ubuntu的docker docker run ti name test1 ubunt 然后安装php5 fpm apt get install php5 fpm 配置fpm 允许从其他机器访问 listen 9000 默认是12
  • 树实现客户端红点系统

    树实现客户端红点系统 红点系统总览 demo 设计 代码设 引用 https zhuanlan zhihu com p 85978429 红点系统总览 如上图所示 规划红点系统的时候 我们将整个系统分为独立的三个部分 结构层 驱动层和表现层
  • C++ 循环练习第2题:输出一个整数序列中与指定数字相同的数的个数。输入包含2行:第1行为n和m,表示整数序列的长度n<=100和指定的数字;第2行为n个整数,整数之间以一个空格分开。输出为n个数中与

    C 循环练习第2题 输出一个整数序列中与指定数字相同的数的个数 输入包含2行 第1行为n和m 表示整数序列的长度n lt 100和指定的数字 第2行为n个整数 整数之间以一个空格分开 输出为n个数中与m相同的数的个数 1 题目 2 循环解决
  • 计算机网络——第4章网络层(上)

    目录 第 4 章 网络层 上 基本概念 IP地址 基本概念 IP地址结构 ABC三类IP地址 A类 B类 C类 子网地址的结构 子网掩码 无类域间路由技术CIDR CIDR地址块 CIDR地址规划方法 最长前缀匹配 IP地址相关的解题步骤
  • [Docker]使用Docker部署常见的中间件

    theme healer readable highlight xcode 本篇文章给大家介绍如何使用 Docker 部署在企业工作中常用的中间件服务 Nginx shell docker run d p 80 80 name nginx
  • C++虚函数解析

    C 中的虚函数的作用主要是实现了多态的机制 关于多态 简而言之就是 用父类型别的指针指向其子类的实例 然后通过父类的指针调用实际子类的成员函数 这种技术可以让父类的指针有 多种形态 这是一种泛型技术 所谓 泛型技术 说白了就是 试图使用不变
  • java进程的远程调试

    java进程的远程调试 一 jdb调试 mqbroker jvm参数配置 2 利用jdb idea eclipse 远程调试 同本地调试一样 二 jvisualvm jvm 监视 使用jstatd连接 nohup JAVA HOME bin
  • java读取excel方法是_【转】Java读取Excel文件的几种方法

    读取excel文件的常用开源免费方法有以下几种 JDBC ODBC Excel Driver jxl jar jcom jar poi jar 下面分别对这几种方法分别进行探讨 1 JDBC ODBC Excel Driver 这种方法是将
  • jenkins始终无法正确使用git的解决方案

    在安装jenkins后 选定git的版本 git版本需要再1 7以上才行 在jenkins中设置git的执行路径 一定要检查是否是正确的 1 error Peer certificate cannot be authenticated wi
  • MySQL分表后,如何做分页查询?

    点击关注公众号 Java干货及时送达 来源 blog csdn net joy tom article details 109857573 随着项目运行的时间越来越长 有些数据的存储也会越来越大 比如一些点击量 浏览量量 单表的数据可以到达
  • 辐射定标、辐射校正、大气校正、正射校正等相关概念

    作为初学者 容易将这几个概念搞混 为了较好地理解这几个概念 先介绍一下相关的术语 terminology DN值 Digital Number 遥感影像像元亮度值 记录地物的灰度值 无单位 是一个整数值 值大小与传感器的辐射分辨率 地物发射
  • Python学习笔记综合

    一 安装和学习建议 1 使用的2 7 2 环境变量 python的根目录 3 cmd就可以运行 执行使用 python xxx py 4 编写代码可以直接python进入代码编辑 5 exit 退出编辑环境 安装与学习建议 pycharm专