Python3语法笔记(后篇)

这篇具有很好参考价值的文章主要介绍了Python3语法笔记(后篇)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

这篇文章主要用于记录Python3相关语法,方便自己查阅使用。

Python3语法笔记(前篇):
https://blog.csdn.net/Naisu_kun/article/details/130056943

这篇文章主要参考自官方文档中 教程(Tutorial) 部分:
英文文档:https://docs.python.org/3/
中文文档:https://docs.python.org/zh-cn/3/

函数

Python中使用 def 来定义函数,和大部分语言一样,函数可以有输入参数和返回内容:

def func1(): # 没有输入参数和返回的函数
    pass # 一些语句

def func2(arg1, arg2): # 有输入参数和返回的函数,多个输入参数之间使用 , 分隔
    pass # 一些语句
    return 233

输入参数

函数的输入参数可以有默认值( 默认参数 ),有默认值的参数必须放在后面:
Python3语法笔记(后篇)

调用函数时也可以使用输入参数名称来设置特定参数值( 关键字参数 ):
Python3语法笔记(后篇)

前面两个例子中可以看到函数使用时输入参数可以使用函数定义时的顺序输入,也可以使用关键字方式,Python中也可以使用符号来强制规定使用顺序或者关键字:

def func(arg1, /, arg2=22, *, arg3=33):
# / 前的参数使用时只能用顺序
# * 后的参数使用时只能用关键字

函数输入参数中最后可以使用可变参数,在调用时可以传入任意个数参数:
Python3语法笔记(后篇)

在调用函数时可以直接解包传入的列表、元组或字典等元素,分散成一个个独立的位置参数:
Python3语法笔记(后篇)
Python3语法笔记(后篇)

输入参数使用时需要注意值传递和引用传递的问题:

  • 值传递: 参数类型为不可变类型(字符串、数字、元组),函数内部修改传入的参数 不会 影响原始数据;
  • 引用(地址)传递: 参数类型为可变类型(列表,字典),函数内部修改传入的参数 影响原始数据;

Python3语法笔记(后篇)

另外默认参数使用可变类型时也需要特别注意:
Python3语法笔记(后篇)

传入参数也可以是函数,就是通常所说的回调函数,这个也非常常用,甚至算是必不可少的功能。

返回值

Python中每个函数中都有 return 语句,即使你没写也会有一个默认的 return None
Python3语法笔记(后篇)

return 通常只能返回一个对象,如果想要返回多个对象可以把需要返回的东西都封装到一个列表、元组等元素中。Python中也提供了进一步的简化:
Python3语法笔记(后篇)

return 也可以返回函数,常用的场景是函数内部定义函数,然后返回该函数。这个经常来拿做 闭包 使用:
Python3语法笔记(后篇)

装饰器(decorator)

装饰器是一个语法糖,可以在不改变原有函数的情况下增加函数功能:
Python3语法笔记(后篇)

装饰器也是可以带入参数的:
Python3语法笔记(后篇)

一个函数也可以使用多个装饰器:
Python3语法笔记(后篇)

需要注意的是一个函数如果用上了装饰器,那么会丢失原本的 __name____doc__ 等属性,这个可以使用语言内置的 @wraps() 装饰器来处理:
Python3语法笔记(后篇)

Lambda表达式(匿名函数)

使用 lambda 关键词可以临时性的定义一个函数:
Python3语法笔记(后篇)

文档和注解

定义函数时函数名的下面可以使用多行字符串方式编写函数文档:
Python3语法笔记(后篇)

Python是弱类型的,函数中输入输出内容也如此,不过可以使用 注解 来提示说明相关参数的类型:
Python3语法笔记(后篇)
需要注意的是 注解 只是提示性内容,解释器运行代码时并不会强制检查。

类和实例

类和对象是面向对象的语言中比较常用的功能。简单来说类就是对一个对象的抽象,其中包含了对象具有的一些属性(变量)和方法(函数)。下面是Python中类的最基本使用例子:
Python3语法笔记(后篇)

需要注意的是在类中如果不是像上面那样在构造函数中使用 self.xxx 方式声明的变量,而是直接和方法同级声明的普通变量,这将成为类变量,这在有些时候会产生意料之外的问题:
Python3语法笔记(后篇)

前面使用中实例的属性是可以在使用是获取和修改的,在实际使用时通常会有对实例属性的获取和修改进行特定处理的需求,比如下面的一些例子:
Python3语法笔记(后篇)
Python3语法笔记(后篇)

特殊方法

前面出现过 __init__(self[, ...]) 这个方法,其实这种 __xx__ 形式的方法是Python中的自带的特殊的方法,这些方法通常会在特定操作的时候被调用,比如 __init__ 就会在实例被创建的时候调用,下面是一些演示:
Python3语法笔记(后篇)

更多的这类方法可以查看 Python语言参考手册数据模型 章节的 特殊方法名称

继承

面向对象语言中涉及到类,往往还会有继承的概念,一个类(子类)可以继承自一个或多个类(父类)。子类可以直接拥有父类的属性和方法,子类也可以有自己的属性和方法,子类还可以重写(Override)父类的方法:

class P1:
    def __init__(self):
        print('P1构造方法')

    def fun1(self):
        print('P1 func1')


class P2:
    def __init__(self):
        print('P2构造方法')

    def fun2(self):
        print('P2 func2')


class Child(P1, P2):  # Child类继承 P1 P2 两个类
    def __init__(self):
        super().__init__()  # super()相当于第一个父类(P1)
        P2.__init__(self)  # 调用 P2 类的构造方法
        print('Child构造方法')

    def fun1(self):  # 重写P1类中的fun1方法
        super().fun1()  # 调用P1类中的fun1方法
        print('Child func1')


child = Child()
child.fun1()
child.fun2()

Python3语法笔记(后篇)

枚举类

Python中没有枚举类型,可以使用枚举类来代替:

from enum import Enum, unique

@unique  # 该装饰器用来检查内部不会有重复的值
class Color(Enum):
    red = 1
    green = 2
    blue = 3

print(Color.green) # 枚举类型直接通过 类名.属性 来访问
print(Color.green.name) # 访问属性名称
print(Color.green.value) # 访问属性值

# Color.green.value = 233 # 枚举类型的值无法修改

Python3语法笔记(后篇)

错误和异常

Python中的异常处理和大多数语言也很相似:

try:
    pass # 执行可能会出现异常的操作
except Exception: # 出现异常时分支,Exception为异常类型,可以使用元组包含多个异常类型,或者什么都不写来捕获所有异常
    pass
else: # 如果存在try和except,并且try正常执行后进入的分支
    pass
finally: # 不管是否出现异常,在这整个代码块结束前进入的分支
    pass

各种异常类型可以在 Python标准库内置异常 章节中查看。

Python中可以使用 raise 关键词来抛出异常。另外也可以使用 assert 关键词来测试表达式真假,如果为假则抛出 AssertionError 异常。

后记

这里只是粗略记录了一些Python的语法。Python作为脚本语言来说语法足够简单与灵活,可以算得上是比较不错的语言了(除了缩进和私有化)。文章来源地址https://www.toymoban.com/news/detail-428249.html

到了这里,关于Python3语法笔记(后篇)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python常用基础语法知识点大全合集,看完这一篇文章就够了

    Python 是一门独特的语言,快速浏览一下他的要点: 面向对象:每一个变量都是一个类,有其自己的属性(attribute)与方法(method)。 语法块:用缩进(四个空格)而不是分号、花括号等符号来标记。因此,行首的空格不能随意书写。 注释:行内用“#”号,行间注释写在两

    2023年04月22日
    浏览(45)
  • python3 0基础学习笔记

    例如下边定义一个thing函数 没有返回值的时候,none表示空 下图第一个print是打印的值相等 ,所以是True 下图第二个print是打印的内存地址 ,所以是False 下图第三个print是打印的内存地址不相等 ,所以是True break 结束循环 continue结束当前迭代进入下一个迭代 1. .capitalize() 降低一

    2024年02月13日
    浏览(30)
  • Python3学习笔记39-passlib

    passlib处理密码哈希的python包,支持很多哈希算法和工具 会安装passlib包和bcrypt两个包  如果运行正常,但是会提示AttributeError: module \\\'bcrypt\\\' has no attribute \\\'__about__\\\',最简单的解决方法,将bcrypt版本指定4.0.1

    2024年04月23日
    浏览(18)
  • Python3 学习笔记 ~ 怎样打印字符串

    Python中变量的打印方法_python打印变量_清欢依旧的博客-CSDN博客

    2024年02月15日
    浏览(28)
  • 【C语言进阶篇】看完这篇结构体文章,我向数据结构又进了一大步!(结构体进阶详解)

    🎬 鸽芷咕 :个人主页  🔥 个人专栏 :《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活!    🌈 hello! 各位宝子们大家好啊,结构体的基本使用和常见错误在上一篇详细讲解过了,不知道大家都学会了没有。    ⛳️ 今天给大家来个硬菜,教点高

    2024年02月15日
    浏览(36)
  • python3.11.4和paddle2.5.1安装CPU版本-笔记

    python3.11.4和paddle2.5.1安装CPU版本-笔记 一、python3.11.4安装 下载地址:https://www.python.org/downloads/windows/ Python Releases for Windows Latest Python 3 Release - Python 3.11.4 https://www.python.org/downloads/release/python-3114/ 二、paddle2.5.1安装 CPU 版的 PaddlePaddle OK python -m pip install paddlepaddle==2.5.1 -i https://mir

    2024年02月13日
    浏览(35)
  • Python基础语法笔记整理(黑马8天学会python笔记)

    01.字面量(写在代码中的固定的值) 02.注释 03.变量 变量无类型,数据有类型 04.数据类型 05.类型转换 字符串转数字:字符串中必须只能由数字 06.标识符(类、方法、变量命名) : 07.运算符 08.字符串 字符串定义 注意:引号嵌套。 字符串拼接 字符串格式化 格式化精度控制

    2024年02月11日
    浏览(26)
  • Python学习笔记—基本语法

    1、一般代码第一行会有#!/usr/bin/python3 这句注释是告诉操作系统执行该脚本时,调用/usr/bin目录下的Python 解释器。 在windows 下可以不写第一行注释 2、多行注释’’’和”””,用法类似verilog中的/**/ 如 ’’’ 第一行注释 第二行注释 ‘’‘ 3、多行语句表示 一般最好是一行

    2024年02月07日
    浏览(33)
  • 2023-08-15 Untiy进阶 C#知识补充5——C#6主要功能与语法

    ​ 注意:在此仅提及 Unity 开发中会用到的一些功能和特性,对于不适合在 Unity 中使用的内容会忽略。 一、概述 ​ C#6 的新增功能和语法主要包含: =运算符(C# 进阶内容) Null 传播器(C# 进阶内容) 字符串内插(C# 进阶内容) 静态导入 异常筛选器 nameof 运算符 二、静态导

    2024年02月12日
    浏览(26)
  • 2023-08-04 Untiy进阶 C#知识补充4——C#5主要功能与语法

    ​ 注意:在此仅提及 Unity 开发中会用到的一些功能和特性,对于不适合在 Unity 中使用的内容会忽略。 一、概述 C# 5 调用方信息特性(C# 进阶内容) 异步方法 async 和 await 二、回顾——线程 Unity 支持多线程 Unity 中开启的多线程不能使用主线程中的对象 Unity 中开启多线程后一

    2024年02月14日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包