Python基础知识学习与回顾

Python学习

Python基本语法

标识符

标识符由数字、字符串、下划线构成。

注意事项:

  1. 标识符不以数字开头
  2. 区分大小写
  3. 下划线开头的标识符具有特殊意义
  4. 保留字,Python保留了一些关键字,这些关键字都是通过小写字母进行保存。
下划线开头的特殊含义:单下划线: _foo 代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入。 双下划线: __foo 代表类的私有成员 双下划线开头和结尾: __foo__  Python里特殊方法专用的标识,如 __init__() 代表类的构造函数。 

行与缩进

python不通过括号来保留层级关系,通过缩进进行编写模块。缩进的数量可以自己控制,但是需要统一。

多行语句

使用斜杠\可以把一行语句当做多行来显示

# 去掉斜杠会报错
total = one + \         two + \         three

语句中包含 [], {} 或 () 括号就不需要使用多行连接符:

# 不用斜杠也不会报错
data = {1,2,3,         4,5,6}  data1 = [1,2,3,          4,5,6] data2 = (1,2,3,          4,5,6)

引号

引号可以用来定义字符串,可以是单引号,双引号和三引号。单引号和双引号之间没有区别,三引号可以用来定义多行的字符串,同时三引号也可以用来表示多行的注释。

Python 变量

变量可以存储内存中的值。创建变量可以在内存中开辟空间。变量可以存储整数、小数或者字符。

每个变量在使用前必须赋值,变量被赋值之后,这个变量才会被创建。

变量等过=号被赋值

Python标准数据类型

  • 数字 Numbers

    • int 符号整数
    • long 长整型
    • float 浮点型
    • complex 复数
  • 字符串 String

    • 字符串取值的两种顺序

    • 从左到右索引默认从0开始,从右到左索引默认从-1开始。

    • 在这里插入图片描述

    • str = 'Hello World!'   
      print str           # 输出完整字符串 
      print str[0]        # 输出字符串中的第一个字符 
      print str[2:5]      # 输出字符串中第三个至第六个之间的字符串 print str[2:]       # 输出从第三个字符开始的字符串 
      print str * 2       # 输出字符串两次 
      print str + "TEST"  # 输出连接的字符串#python列表截取可以接收三个参数,第一个是起始下标,第二个是终止下标,第三个是截取的步长print str[1:4:2]
      #意思就是从索引1到索引4设置为步长为2,取出这些字符
  • 列表 List

    • 是Python中使用最频繁的数据类型

    • 里面的数据类型可以多样,可以包含数字、字符串和字符,也可以包含列表进行嵌套

    • 采用[]进行标识

    • 列表的基本操作

      #列表的基本操作 
      list = ['aad',76,'c',23.1,'e','f'] 
      newlist = [123,'sow'] 
      print(list[1:]) 
      print(list[:4]) 
      print(list[1:3]) 
      print(list[1:5:2]) 
      print(list+newlist)#一些基本的函数 
      list1 = [1,2,3,4,5,6] 
      list1.append(7)         #列表末尾添加元素 
      list1.count(1)          #统计某个元素出现的次数 
      list1.sort()            #对列表进行排序 
      list1.reverse()         #反转列表 
      list1.pop()             #弹出第一个元素,并返回该值 
      list1.index(4)          #找到元素4的下标 
      list1.extend([8,9,10])  #末尾添加列表
      
  • 元组 Tuple

    • 类似于列表,但是里面的元素不能二次赋值,不能更新,相当于只读列表
    #元组的基本操作 
    tuple1 = ('aad',76,'c',23.1,'e','f') 
    newtuple = (123,'sow') 
    print(tuple1[:]) 
    print(tuple1[1:]) 
    print(tuple1[1:3]) 
    print(tuple1*2) 
    print(tuple1 + newtuple)#元组的一些基本函数
    #元组里面的元素不能修改,但是可以对元组进行连接和组合
    tup3 = tuple1 + newtuple		#元组的组合
    del tup3						#元组的删除
    len(tuple1)                     #元组长度
    max(tuple1)                     #求元组中的最大值
    
  • 字典 Dictionary

    • 除列表以外最灵活的数据结构类型,列表是有序的对象集合,字典是无序的对象集合。字典当中的元素是通过键来存取的,而不是通过偏移存取。
    #字典 dict = {} 
    dict['one'] = "first" 
    dict['two'] = 'second' 
    newdict = {'name':'Phil','number':2023, 'school': 'jLU'} print(dict['one']) 
    print(dict['two']) 
    print(dict) 
    print(dict.keys()) 
    print(dict.values())
    

    三类数据类型对比:

    数据类型表示符号特点
    列表 List[]1、最灵活
    2、元素可以进行多样,可以进行增删改查
    3、用下标进行取值
    元组 Tuple()1、最不灵活
    2、元素可以多样,创建之后不能对里面元素进行操作
    3、用下标进行取值
    字典 Dictionary{}1、灵活度仅限于列表
    2、元素可以多样,可以进行增删改查
    3、用键值对进行取值

    数据类型转换

    python里面可以拥有内置函数进行格式转化。这些函数可以返回一个新的对象

    #数据类型转化 
    number = 12.5 
    count = 5 
    string = "1,2,3,4,5" 
    print(int(number))      #转化为整数 
    print(complex(number))  #转化为复试 
    print(str(number))      #转换为字符串 
    print(list(string))     #转化为列表 
    print(tuple(string))    #转化为元组 
    print(dict(string))     #转化为字典,因为不是(key,value)元组,会报错 
    print(set(string))      #转化为集合 
    print(hex(count))       #转化为16进制的字符串 
    print(oct(count))       #转化为8进制的字符串
    

    Python运算符

    算数运算符应该都接触过,加减乘数,还有一些稍微特别一些的,取模和幂和整除。

    比较运算符,就是常见的大于、等于、小于这些,其中不等于需要注意下

    赋值运算符,=,还有一些简写的,-=,+=这些

    位运算符,这个一般很少用,但是这个是比较底层的元素,可以提高运算速率

    逻辑运算符,and,or,not就相当于与,或,非运算

    成员运算符,in,not in,判断指定的序列是否存在某个值

    +,-,*,/,%,**加减乘除,取模,幂次
    //取整数,返回商的整数部分(向下取整)
    ==等于号,判断两个数是否相等
    !=不等于,判断两个数是否不相等
    >,<,>=,<=大于、小于、大于等于、小于等于
    **=,//=c**=a 等于 c=c**a
    &按位与运算,都为1,才为1,否则为0
    |按位或运算,只要其中一个为1,才为1,否则为0
    ^异或运算,二进制对应的位置相异时,结果为1
    ~取反运算,把0变成1,把1变成0
    >>右移运算,二进制全部右移若干位
    <<左移运算,高位丢弃,低位补0

Python 条件语句、循环语句

各种编程语言其实都类似,稍微记下语法的区别就可以

#if else基本使用
"""
if 判断条件:执行语句.....
else:执行语句.....	
"""#循环语句 分为while循环和for循环"""
while 循环
while 判断条件:执行语句
"""#举例
a = 1
while a < 10:a+=2"""
for循环
for 变量 in 序列(可以是列表,字符串):"""

循环控制语句:

break终止循环,跳出整个循环
continue终止循环,跳出该次循环,执行下一次循环
pass空语句,保证程序结构的完整性

Python日期和时间

Python提供了time和calendar两个模块用于格式化日期和时间。

每个时间戳是从1970年1月1日午夜经历了多长时间来进行表示的。

#时间
print(time.time())                      #输出时间戳
print(time.localtime(time.time()))      #输出本地时间
print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()))      #格式化日期
#格式化需要注意,大小写%Y,%y以及很多表示的内容都是不一样的,需要根据需求设置对应的格式,具体看官网#日历
print(calendar.calendar(2023))			#输出2023年的日历
print(calendar.month(2016,1))			#输出2016年的1月份日历

Python函数

函数是组织好的,可重复使用,用来实现单一,或相关联功能的代码段。

作用:提高应用的模块性和代码的重复利用率。

定义函数,函数调用

  • **def**开头,后面接函数名和圆括号(),圆括号里面放参数
  • 函数内容从冒号开始,然后要进行缩进
  • return表示结束函数,不带return返回none
#print函数 
def printstr(str):         print(str)         return 
#函数调用 
printstr("this is a test")

参数传递

在Python中,类型属于对象,变量没有类型。

Python中一切都是对象,严格意义我们不能说值传递还是引用传递,我们应该说传不可变对象和传可变对象。

  • 不可变类型:数字、字符串、元组
    • a=5,改成了a=10。并不是改变了a,而是生成了一个新的对象10,丢弃原来的5,新生成了一个a
    • 在python中参数传递中,只是传递了值,不会影响原本的对象,类似于c的值传递
  • 可变类型:列表、字典
    • la=[1,2,3,4],la[1]=10,更改了元素,本身la并没有变,只是内部的值变化了。
    • 在python中可变类型的参数传递类似于C语言的指针。

参数

  • 必备参数:调用时的数量必须与声明时的一样。
#print函数 
def printstr(str):         print(str)         return 
#必备参数
printstr("this is a test")
  • 关键字参数:关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。
#print函数  
def printstr(name,age):              print(name+age)              return  
#关键字参数 
printstr(age="18",name="Yang")  #顺序可以调换
  • 默认参数:调用函数时,默认参数的值如果没有传入,则被认为是默认值。下例会打印默认的age
#print函数  
def printstr(name,age=18):    #age设置了默认值              print(name+age)                  return  
#默认参数 
printstr(name="Yang")
  • 不定长参数:函数能处理比当初声明时更多的参数。加了星号(*)的变量名会存放所有未命名的变量参数。
# 可写函数说明 
def printinfo( arg1, *vartuple ):    "打印任何传入的参数"    print "输出: "    print arg1    for var in vartuple:       print varreturn   
# 调用printinfo 函数 
printinfo( 10 ) 
printinfo( 70, 60, 50 )

局部变量和全局变量

定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中

Python模块

Module Python文件,包含Python的对象定义和Python的语句。

可以有逻辑的组织代码段

让代码更好用,更易懂

可以定义函数、类和变量,可以包含可执行的代码。

模块导入 import

import module		         #引入模块
from modnmae import name1    #从模块中导入一个制定的部分
from modname import * 		 #把一个模块的所有内容全部导入

搜索路径

导入模块,Python解析器对模块位置的搜索顺序;

  1. 当前目录
  2. 不在当前目录,搜索shell变量的PYTHONPATH下的目录
  3. 如果都找不到,Python会查看默认路径

Python中的包

分层次的文件目录结构,由模块以及子包构成。

包就类似于文件夹,文件夹中必然存在__init__..py文件,这个文件的内容可以是空的,只是用来标识当前文件夹是一个包。

让代码更好用,更易懂

可以定义函数、类和变量,可以包含可执行的代码。

Python异常处理

Python异常

异常就是程序无法正常执行。异常有很多种类型,我们如果希望发生异常时不要中断程序,这时候就需要用到异常处理,否则程序就会终止执行。

异常处理

使用try/except语句

try<语句>    #可能会出现异常的地方
except <名字>:<语句>	  #try部分发生了name异常
except<名字>,<数据>:<语句>	 #引发了name异常,获得附加的数据
else:<语句>	#没有异常发生

程序处理的流程:

  • try发生了异常,Python控制流找到第一个匹配该异常的except的语句,异常处理完之后,控制流就通过了整个try语句
  • 如果try语句发生了异常,却没有匹配上的except语句,异常就会递交到上层的try,或者到程序的最上层,这样就会结束程序,打印出默认的出错信息。
  • try没有发生异常,python控制流将会执行else语句后的语句。然后通过整个try语句。

使用try/finally语句

无论语句是否发生异常都会执行最后finally的代码。
使用 raise语句
raise语句可以触发异常

Python面向对象

Python一开始设计就是面向对象的语言。
面向对象就是,解决同一个问题 ,面向对象编程就是先抽象出对象,然后用对象执行方法的方式解决问题,面向对象是以功能来划分问题,而不是步骤。

面向对象的三大特征:

  • 封装

    • 把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
  • 继承

    • 继承,指可以让某个类型的对象获得另一个类型的对象的属性的方法。它支持按级分类的概念。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”。继承的过程,就是从一般到特殊的过程。
  • 多态

    • 多态,是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。

面向对象技术简介

  • 类(class):具有相同属性和方法的对象的集合。对象是类的实例。
  • 类变量:类的变量在整个是厉害的对象中是公共的。类变量通常不作为实例变量使用。类变量定义在类中且在函数体之外。
  • 数据成员:类变量或者实例变量。用于处理类以及实例对象相关的数据。
  • 方法重写:从父类继承的方法不能满足子类的需求,对其进行改写。
  • 局部变量:定义在方中的变量,只作用于当前实例的类。
  • 实例变量:在类的声明中,属性是用变量来进行表示的,变量就称为实例变量,在类声明的内部,但是是在类的其他成员方法之外声明的。
  • 继承:派生类继承基类的字段和方法。
  • 实例化:创建类的实例
  • 方法:类中定义的函数
  • 对象:类定义的数据结构实例。对象发阔两个数据成员(类变量和实例变量)和方法。

类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。
_init_()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/115370.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在k8s中用label控制Pod部署到指定的node上

案例-标注k8s-node1是配置了SSD的节点 kubectl label node k8s-node1 disktypessd 查看标记 测试 将pod部署到disktypessd的节点上&#xff08;这里设置了k8s-node1为ssd&#xff09; 部署后查看结果-副本全都运行在了k8s-node1上—符合预期 删除标记 kubectl label node k8…

Camera | 12.瑞芯微摄像头自动焦距马达驱动移植

本为你主要讲解如何让摄像头ov13850支持自动对焦功能。 摄像头的对角主要通过VCM马达驱动芯片DW9714来实现的。 一、环境 soc : rk3568 board: EVB1-DDR4-V10 软 件&#xff1a;Android 11 Linux&#xff1a;4.19.232 Camera:ov13850二、DW9714 1.DW9714简介 DW9714专…

【已解决+吐槽】pip install cn2an报错 Cannot uninstall ‘ruamel_yaml‘

我需要用cn2an模块将中文的数字转化为阿拉伯数字&#xff0c;但在安装cn2an的过程中出现了以下报错&#xff1a; 于是乎&#xff0c;我跟着CSDN上诸如此类的教程开始跟nodejs死磕&#xff0c;折腾了大半天&#xff0c;以下是各种尝试。这不是重点&#xff0c;我主要是吐槽&…

中文完形填空

本文通过ChnSentiCorp数据集介绍了完型填空任务过程&#xff0c;主要使用预训练语言模型bert-base-chinese直接在测试集上进行测试&#xff0c;也简要介绍了模型训练流程&#xff0c;不过最后没有保存训练好的模型。 一.完形填空 完形填空应该大家都比较熟悉&#xff0c;就是把…

Spring Cloud Alibaba-Sentinel规则

1 流控规则 流量控制&#xff0c;其原理是监控应用流量的QPS(每秒查询率) 或并发线程数等指标&#xff0c;当达到指定的阈值时 对流量进行控制&#xff0c;以避免被瞬时的流量高峰冲垮&#xff0c;从而保障应用的高可用性。 第1步: 点击簇点链路&#xff0c;我们就可以看到访…

现代化畜牧业行业分析 - 商品猪养殖

改革开放以来&#xff0c;中国畜牧业生产基础条件不断改善、生产方式快速转变&#xff0c;畜牧业综合生产能力和保障市场有效供应能力不断加强。中国肉类、禽蛋产量均居世界第一位&#xff0c;奶类产量居世界第三位。随着产量的增长&#xff0c;中国人均畜产品占有量也持续上升…

联网智能实时监控静电离子风机的工作流程

联网智能实时监控静电离子风机是通过将静电离子风机与互联网连接&#xff0c;实现对其状态和性能的远程监控和管理。 具体实现该功能的方法可以包括以下几个步骤&#xff1a; 1. 传感器安装&#xff1a;在静电离子风机上安装适当的传感器&#xff0c;用于感知相关的参数&…

微信开发之一键创建标签的技术实现

简要描述&#xff1a; 添加标签 请求URL&#xff1a; http://域名地址/addContactLabel 请求方式&#xff1a; POST 请求头Headers&#xff1a; Content-Type&#xff1a;application/jsonAuthorization&#xff1a;login接口返回 参数&#xff1a; 参数名必选类型说明…

Python面试:什么是GIL

1. GIL (Global Interpreter lock)可以避免多个线程同时执行字节码。 import threadinglock threading.Lock()n [0]def foo():with lock:n[0] n[0] 1n[0] n[0] 1threads [] for i in range(5000):t threading.Thread(targetfoo)threads.append(t)for t in threads:t.s…

python conda实践 sanic框架gitee webhook实践

import subprocess import hmac import hashlib import base64 from sanic.response import text from sanic import Blueprint from git import Repo# 路由蓝图 hook_blue Blueprint(hook_blue)hook_blue.route(/hook/kaifa, methods["POST"]) async def kaifa(req…

UI自动化之关键字驱动

关键字驱动框架&#xff1a;将每一条测试用例分成四个不同的部分 测试步骤&#xff08;Test Step&#xff09;&#xff1a;一个测试步骤的描述或者是测试对象的一个操作说明测试步骤中的对象&#xff08;Test Object&#xff09;&#xff1a;指页面的对象或者元素对象执行的动…

rtsp 拉流 gb28181 收流 经AI 算法 再生成 rtsp server (一)

1、 rtsp 工具 1 vlc 必备工具 2 wireshark 必备工具 3 自己制作的工具 player 使用tcp 拉流&#xff0c;不自己写的话&#xff0c;使用ffmpeg 去写一个播放器就行 4 live555 编译好live555&#xff0c; 将live555的参数修改以下&#xff0c;主要是缓存大小 文章使用c 来写一…

C++面试题(叁)---操作系统篇

目录 操作系统篇 1 Linux中查看进程运行状态的指令、查看内存使用情况的指令、 tar解压文件的参数。 2 文件权限怎么修改 3 说说常用的Linux命令 4 说说如何以root权限运行某个程序。 5 说说软链接和硬链接的区别。 6 说说静态库和动态库怎么制作及如何使用&#xff0c;区…

界面控件DevExpress WinForms(v23.2)下半年发展路线图

本文主要概述了官方在下半年&#xff08;v23.2&#xff09;中一些与DevExpress WinForms相关的开发计划&#xff0c;重点关注的领域将是可访问性支持和支持.NET 8。 DevExpress WinForms有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。同时能…

自然语言处理-NLP

目录 自然语言处理-NLP 致命密码&#xff1a;一场关于语言的较量 自然语言处理的发展历程 兴起时期 符号主义时期 连接主义时期 深度学习时期 自然语言处理技术面临的挑战 语言学角度 同义词问题 情感倾向问题 歧义性问题 对话/篇章等长文本处理问题 探索自然语言…

四、高并发内存池整体框架设计

四、高并发内存池整体框架设计 现代很多的开发环境都是多核多线程&#xff0c;在申请内存的场景下&#xff0c;必然存在激烈的锁竞争问题。malloc本身其实已经很优秀&#xff0c;那么我们项目的原型TCmalloc就是在多线程高并发的场景下更胜一筹&#xff0c;所以这次我们实现的…

centos 7的超详细安装教程

打开虚拟机&#xff0c;创建一个新电脑 我们选择经典&#xff0c;然后选择下一步 我们选择稍后安装&#xff0c;我们在后面进行改设备 因为centos系统是linux系统的一个版本&#xff0c;所有我们选择linux&#xff0c;版本选择centos 7 64位&#xff0c;然后就是点击下一步 这一…

HTML <template> 标签

实例 使用 <template> 保留页面加载时隐藏的内容。使用 JavaScript 来显示: <button οnclick="showContent()">显示被隐藏的内容</button><template><h2>Flower</h2><img src="img_white_flower.jpg" width=&q…

2023年03月 C/C++(五级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题&#xff1a;拼点游戏 C和S两位同学一起玩拼点游戏。有一堆白色卡牌和一堆蓝色卡牌&#xff0c;每张卡牌上写了一个整数点数。C随机抽取n张白色卡牌&#xff0c;S随机抽取n张蓝色卡牌&#xff0c;他们进行n回合拼点&#xff0c;每次两人各出一张卡牌&#xff0c;点数大者获…

Word导出创建Adobe PDF其中emf图片公式马赛克化及文字缺失

软件版本 Word 2021 Visio 2019 Adobe Acrobat Pro 2020 问题描述 公式马赛克化&#xff0c;是指在Word中使用MathType编辑的公式&#xff0c;然后在Visio中使用图片(增强型图元文件)形式得到的粘贴对象&#xff0c;效果如下 文字缺失&#xff0c;是指Word导出→创建Adobe P…