码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Python独具特色的语法规范点梳理


    在这里插入图片描述

    本文主要梳理相对于其他编程语言(如:c/c++、java、go、c#)而言,Python基础语法中,独具特色的知识点。方便其他语言程序员快速了解Python语法。

    文章目录

    • 前言
    • 一、数据切片
    • 二、数据类型
      • 2.1 数据类型总览
      • 2.2 列表 list
      • 2.3 元组 tuple
        • zip 函数
      • 2.4 字典 dictionary
        • 2.4.1 update 函数
        • 2.4.2 序列解包
    • 三、函数
      • 3.1 函数的定义
      • 3.2 文档注释
      • 3.3 变量的作用域
    • 四、函数式编程
      • 4.1 高阶函数
      • 4.2 常用的高阶函数
      • 4.3 闭包(Closure)
        • 4.3.1 闭包的概念
        • 4.3.2 闭包的作用
      • 4.4 装饰器(decorator)
    • 五、类
      • 5.1 类的构造函数命名为:__init__
      • 5.2 类方法用@classmethod修饰
      • 5.3 内置方法
      • 5.4 python类没有重载(其他语言都有)
      • 5.5 获取对象信息函数
      • 5.6 查看类的继承层次结构
    • 总结


    前言

    本文旨在对知识点做一个系统性的梳理,提供一个类似目录的功能。每个知识点的展开均提供网上参考文章。


    一、数据切片

    切片是Python序列的重要操作之一,适用于列表、元组、字符串、range对象等类型。切片使用2个冒号分隔的3个数字来完成:第一个数字表示切片的开始位置,默认为0,第二个数字表是切片的截止(但不包含)位置(默认为列表长度),第三个数字表示切片的步长(默认为1),当步长省略时,顺便可以省略最后一个冒号。

    可以使用切片来截取列表中的任何部分,得到一个新列表,也可以通过切片来修改和删除列表中部分元素,甚至可以通过切片操作为列表对象增加元素。与使用下标访问列表元素不同,切片操作不会因为下标越界而抛出异常,而是简单地在列表尾部截断或者返回一个空列表,代码具有更强的健壮性。

    具体语法参考文章:[Python]切片完全指南(语法篇) - 知乎

    二、数据类型

    2.1 数据类型总览

    在这里插入图片描述
    Number、Boolean、String、List、Set、Dictionary 和其他编程语言类似。
    Tuple(元组) 略有特殊,tuple和list非常类似,但是tuple一旦初始化就不能修改。

    2.2 列表 list

    列表中,具有python特色的概念就是:range。range 在list构造函数中提供了多种构造形式,目的是简化初始化list的复杂度。
    在这里插入图片描述
    python 的列表可以通过【推导式】
    在这里插入图片描述
    参考文章:Python进阶:列表推导式(List Comprehension)

    2.3 元组 tuple

    元组和列表一样,也是一种序列。不同的是元素是不能修改,也就是说,元组是只读的,不能对元组进行增、删、改。定义元组非常简单,只需要用逗号(, )分割值即可。

    zip 函数

    在这里插入图片描述
    tuple 详细介绍可参考文章:Python的基本数据类型——Tuple

    2.4 字典 dictionary

    2.4.1 update 函数

    在这里插入图片描述
    dictionary 详细介绍可参考:Python 字典(Dictionary)

    2.4.2 序列解包

    序列解包可以用于元组、列表、字典。序列解包可以让我们方便的对多个变量赋值。
    序列解包详细介绍可参考:Python基础知识(序列解包、序列封包)

    三、函数

    3.1 函数的定义

    在这里插入图片描述
    参考文档:Python函数(函数定义、函数调用)用法详解

    3.2 文档注释

    python的文档注释用: “”" 表示。
    参考文章:Python中的注释和文档

    3.3 变量的作用域

    关于作用域的概念,python和其他任何语言都类似。
    其中,global 关键字可以再函数内部改变全局变量的值。
    global关键字:
    在这里插入图片描述

    四、函数式编程

    函数式编程并非python独有。我们知道python的底层是c,而函数式编程是c语言的一个特性。
    函数式编程就是一种抽象程度很高的编程范式。
    函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数!
    参考文章:函数式编程

    4.1 高阶函数

    高阶函数:一个函数可以作为参数传给另外一个函数,或者一个函数的返回值为另外一个函数(若返回值为该函数本身,则为递归),满足其一则为高阶函数。
    参考文章:Python高阶函数

    4.2 常用的高阶函数

    python 中常用的高阶函数有: map()函数、reduce()函数、filter函数()、sorted() 函数、匿名函数(lambda表达式)。
    lambda表达式在很多语言中都广泛使用,并不是python独有的概念。
    参考文章1:python中5个常用的内置高阶函数
    参考文章2:一文搞懂Python匿名函数

    4.3 闭包(Closure)

    参考文章: Python闭包(Closure)详解

    4.3.1 闭包的概念

    在一些语言中,在函数中可以(嵌套)定义另一个函数时,如果内部的函数引用了外部的函数的变量,则可能产生闭包。闭包可以用来在一个函数与一组“私有”变量之间创建关联关系。在给定函数被多次调用的过程中,这些私有变量能够保持其持久性。

    4.3.2 闭包的作用

    ① 可以读取函数内部的变量,②让这些变量的值始终保持在内存中。

    4.4 装饰器(decorator)

    闭包的调用其实是挺繁琐的。在python程序中,装饰器就是一种闭包,它可以使闭包的访问方式更简单。
    本质上,装饰器(decorator)就是一个返回函数的高阶函数。
    在Python中使用装饰器,需要使用一个特殊的符号“@” 来实现。在定义装饰器函数或类时, 使用“@装饰器名称” 的形式将符号“@” 放在函数或类的定义行之前。
    装饰器(decorator)通常用来做打印日志。
    参考文章:python 装饰器详解

    五、类

    5.1 类的构造函数命名为:init

    5.2 类方法用@classmethod修饰

    5.3 内置方法

    Python中的类提供了很多双下划线开头和结尾__xxx__的方法,这些方法是Python运行的基础,很多功能背后都是通过调用这些内置方法来实现的。
    参考文章:全面了解Python类的内置方法

    5.4 python类没有重载(其他语言都有)

    Python 参数没有类型约束,无法根据参数类型区分不同的函数,因此python没有重载一说。
    具体参考:为什么 Python 不支持函数重载?而其他语言大都支持?

    5.5 获取对象信息函数

    python中获取对象信息的函数只要有:type()、isinstance()函数、dir()函数。

    5.6 查看类的继承层次结构

    通过类的方法 mro() 或者类的属性 __mro__可以输出这个类的继承层次结构。
    参考:python中的MRO


    总结

    以上就是我对python语法特色知识点的一个梳理和总结。

  • 相关阅读:
    【Python+Appium】自动化测试(十一)location与size获取元素坐标
    Day116.尚医通:预约挂号详情 ※
    【华为机试真题】组成最大数【2022 Q3 | 100分】
    IMX6ULL移植篇-Linux内核源码目录分析一
    Java 继承与实现
    uniapp 开发H5打包微信小程序样式失效的解决之道
    html表格账号密码备忘录:表格内容将通过JavaScript动态生成。点击查看密码10秒关闭
    第十一篇 基于JSP 技术的网上购书系统——产品类别管理、评论/留言管理、注册用户管理、新闻管理功能实现(网上商城、仿淘宝、当当、亚马逊)
    模糊离散事件系统的可测性
    Java XX市软件产业人才公共服务平台
  • 原文地址:https://blog.csdn.net/guigenyi/article/details/127715223
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号