Python语言基础(简单入门)

一、Python是什么?

Python是一种高级、通用、解释型的编程语言,由Guido van Rossum于1991年创建。它以简洁、易读的语法和强大的功能而闻名,有以下特点:

  • 动态类型:Python是动态类型的语言,这意味着变量无需预先声明类型,并且在程序运行过程中类型可以改变。

  • 缩进风格:Python是缩进敏感的语言,代码块的开始和结束通过缩进来表示,而不是像其他语言那样使用大括号,所以缩进的空格数需要保持一致,一般为4个空格。

  • 面向对象:Python支持面向对象编程,可以创建类和对象,实现封装、继承和多态等特性。

  • 高级特性:Python具有许多高级特性,如列表解析、生成器表达式、装饰器等,可以简化代码并提高效率。

  • 模块化:Python支持模块化编程,可以将功能封装到模块中,方便代码重用和维护。

  • 开放源代码:Python属于开放源代码软件,可以免费获取和使用,同时拥有强大的社区支持和丰富的第三方库。

  • 跨平台:Python是跨平台的,可以在不同的操作系统上运行,具有良好的可移植性。

  • 解释性:Python是一种解释性语言,代码不需要预编译,可以直接运行在解释器上。

  • 丰富的库和工具:Python拥有大量的标准库和第三方库,涵盖了各种领域的功能,可以大大提高开发效率

二、Python的基本语法要点:

1、注释:用#符号表示注释,可以在代码中添加说明或注解

# 这是一个注释
print("Hello, World!")  # 这也是一个注释

2、变量:变量赋值非常简单,不需要显式声明类型,只需要直接给变量赋值即可

x = 10  # 整数
2y = "Hello, World!"  # 字符串
3z = [1, 2, 3]  # 列表

3、数据类型:常见的数据类型包括整数(int)、浮点数(float)、字符串(str)、布尔值(bool)、列表(list)、元组(tuple)、集合(set)、字典(dict)等。

x = 5           # int
y = 3.14        # float
z = "Hello"     # str
is_valid = True # bool
my_list = [1, 2, 3]  # list
my_tuple = (1, 2, 3) # tuple
my_set = {1, 2, 3}   # set
my_dict = {"name": "Alice", "age": 30} # dict

4、条件语句:Python使用关键字if、elif和else实现条件判断:

x = 5
if x > 0:print("x 是正数")
elif x == 0:print("x 是零")
else:print("x 是负数")

5、循环结构:主要有两种循环结构:for循环和while循环

  • for循环常用于遍历序列或其他可迭代对象:
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:print(fruit)

  • while循环基于条件重复执行一段代码:
count = 0
while count < 5:print(count)count += 1

6、函数定义:Python中定义函数使用def关键字:

特别提醒:在Python中,函数名前加单个下划线 _ 是一种命名约定,意味着这个函数主要是给内部使用的,对外部来说是“半私有”的。它不会阻止你访问或调用这个函数,但暗示着:“嘿,这个函数主要是给自己模块内部用的,外部最好别直接动它。”

def greet(name):print(f"Hello, {name}!")greet("Alice")  # 输出 "Hello, Alice!"

 7、模块导入:使用import关键字导入模块,以便使用其中的功能。

import math
print(math.pi)

8、 异常处理try-except-finally结构处理异常。

try:x = 1 / 0  # 除以零会引发ZeroDivisionError
except ZeroDivisionError:print("除数不能为零")
finally:print("无论是否出现异常,都会执行这部分代码")

三、Python中类的继承、封装和多态特性以及它们与Java和C++的不同之处:

Python类的继承、封装和多态等特性与Java和C++类似,但语法上更为简洁直观。

1、继承:

  • 继承是指一个类(称为子类或派生类)可以继承另一个类(称为父类或基类)的属性和方法。在Python中,可以通过在类定义时在括号中指定要继承的父类来实现继承。
  • 在Python中,类也可以多继承,即一个子类可以同时继承多个父类。这种多继承的特性在Java和C++中也存在,但在Python中更加灵活。
# 父类1
class Animal:def __init__(self, name):self.name = namedef make_sound(self):pass# 父类2
class Pet:def __init__(self, owner):self.owner = owner# 子类继承自父类1和父类2,实现多继承
class Dog(Animal, Pet):def make_sound(self):return "Woof!"# 实例化对象,传入不同参数
dog = Dog("Buddy", "Alice")# 输出对象的属性和方法
print(f"{dog.name} belongs to {dog.owner}")
print(f"{dog.name} says: {dog.make_sound()}")

2、封装:

Python并没有像Java或C++那样有严格的访问修饰符(public、private、protected),但是它提供了另一种形式的封装。在Python中,通常约定以单个下划线 _var 或双下划线 __var 开头的变量被视为非公开或者私有

  • 单下划线开头的变量或方法虽然不是真正的私有,但按照PEP8编码规范,这暗示着这是一个内部使用的变量或方法,外部应该尽量避免直接访问。
  • 双下划线 __var 会在运行时发生名称重整(name mangling),使得外部直接访问变得更加困难(变成 _ClassName__var 的形式),从而达到某种程度上的“私有化”。

尽管如此,Python的封装仍然是基于约定而非强制,任何内部属性都可以通过直接引用方式访问到。

为了更精确地控制属性访问,Python引入了属性描述符,允许程序员在访问属性时执行特定的操作(如读取、设置或删除属性时触发函数)。

class MyClass:def __init__(self):self._internal_value = None  # 私有变量@propertydef value(self):return self._internal_value@value.setterdef value(self, new_value):if isinstance(new_value, int):self._internal_value = new_valueelse:raise ValueError("Value must be an integer")# 使用
obj = MyClass()
obj.value = 42  # 通过属性描述符设置值
print(obj.value)  # 通过属性描述符获取值

例子中:第5行的@property装饰器将value方法转换为一个只读属性。这意味着当你尝试读取obj.value时,实际上会调用第7行定义的方法,而无需显式调用方法名(如obj.value())。第9行的@value.setter装饰器定义了一个设置器方法,当尝试给obj.value赋值时(如obj.value = 42),会调用这里的代码块。在这个例子中,它检查赋值的新值是否为整数,如果是,则更新内部的_internal_value,否则抛出错误。

3、多态:

多态意味着子类可以重写或扩展父类的方法,使得同一个接口可以有不同的实现。

  • 在Python中,多态是动态类型语言的特性,即对象的类型是在运行时确定的(即“如果它走起路来像鸭子,叫起来也像鸭子,那么它就是鸭子”),可以实现同一个方法在不同子类中有不同的实现。
  • Python的多态性是基于动态类型的,而Java和C++的多态是基于静态类型的。在Java和C++中,多态性通过继承和接口来实现,需要在编译时确定对象的类型。
# 多态示例
class Shape:def area(self):raise NotImplementedError("Subclasses should implement this!")class Square(Shape):def __init__(self, side):self.side = sidedef area(self):return self.side ** 2class Circle(Shape):def __init__(self, radius):self.radius = radiusdef area(self):import mathreturn math.pi * self.radius ** 2shapes = [Square(4), Circle(3)]
for shape in shapes:print(shape.area())  # 多态性:每个shape对象调用area方法时,会执行各自子类的实现

4、总结:

虽然Python、Java和C++都支持类的继承、封装和多态这些面向对象编程的特性,但它们之间在实现方式和特性上存在一些不同。Python作为一种动态类型语言,更加灵活和简洁,而Java和C++作为静态类型语言,在编译时类型检查更加严格。

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

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

相关文章

计算机毕业设计Python+Vue.js天气预测系统 中国气象质量采集与可视化 天气数据分析 天气可视化 天气大数据 天气爬虫 大数据毕业设计

摘要 随着科技技术的不断发展&#xff0c;人民物质生活质量不断提高&#xff0c;我们越来越关注身边的气象、空气等地理环境。对于普通居民我们会选择合适的气象进行出游&#xff0c;提高精神层面的生活质量&#xff1b;对于企业会关注气象变换状况&#xff0c;来定制相关的生产…

【微机原理及接口技术】8086/8088系统时序和微机总线

【微机原理及接口技术】8086/8088系统时序和微机总线 文章目录 【微机原理及接口技术】8086/8088系统时序和微机总线前言一、8086/8088引脚信号和工作模式1.8088 的两种组态模式2.最小组态的引脚信号3.最小组态的总线形成4.最大组态的总线形成 二、8086/8088典型时序1.三种周期…

【编程题-错题集】非对称之美(找规律 / 贪心)

牛客对应题目链接&#xff1a;非对称之美 (nowcoder.com) 一、分析题目 找规律&#xff1a; 判断是否全都是相同字符。判断本身是否是回文。 如果这个字符串每个字符相同&#xff0c;不存在非回文子串&#xff0c;直接返回 0。如果这个字符串不是回文&#xff0c;输出字符串长度…

临时有事无法及时签字盖章?试试用契约锁设置“代理人”

遇到“领导休假中、在开重要会议、外出考察或者主任医生手术中等”一段时间内不方便或者无法及时签字盖章的情况怎么办&#xff1f;业务推进不了只能干等&#xff1f; 契约锁电子签及印控平台支持印章、签名“临时授权”、“代理签署”&#xff0c;实现指定人、指定时间段、指定…

Python专题:二、Python小游戏,体验Python的魅力

希望先通过一个小的游戏让大家先对Python感兴趣&#xff0c;兴趣是最好的老师。 小游戏的运行结果&#xff1a; 1、在sublime编辑器里面写如下代码&#xff1a; import randomnum random.randint(1, 100) # 获得一个随机数 is_done False # 是否猜中的标记 count 0 # 玩…

整合 Java, Python 和 Scrapy 爬虫以传递和使用参数

这篇博客将详细说明如何从 Java 应用程序调用一个 Python 脚本&#xff0c;并在此过程中传递参数给一个 Scrapy 爬虫。最终目标是让 Java 控制爬虫的行为&#xff0c;如爬取数量和特定的运行参数。 一、Scrapy 爬虫的修改 首先&#xff0c;我们需要确保 Scrapy 爬虫能接收从命…

虹科Pico汽车示波器 | 免拆诊断案例 | 2010款凯迪拉克SRX车发动机无法起动

故障现象 一辆2010款凯迪拉克SRX车&#xff0c;搭载LF1发动机&#xff0c;累计行驶里程约为14.3万km。该车因正时链条断裂导致气门顶弯&#xff0c;大修发动机后试车&#xff0c;起动机运转有力&#xff0c;但发动机没有着机迹象&#xff1b;多起动几次&#xff0c;火花塞会变…

Python-VBA函数之旅-repr函数

目录 一、repr函数的常见应用场景 二、repr函数使用注意事项 三、如何用好repr函数&#xff1f; 1、repr函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、推荐阅读&#xff1a; 个人主页&#xff1a;https://blog.csdn.net/ygb_1024?spm1010.2135.…

阿里云VOD视频点播流程(1)

一、开通阿里云VOD 视频点播&#xff08;ApsaraVideo VoD&#xff0c;简称VOD&#xff09;是集视频采集、编辑、上传、媒体资源管理、自动化转码处理、视频审核分析、分发加速于一体的一站式音视频点播解决方案。登录阿里云&#xff0c;在产品找到视频点播VOD &#xff0c;点击…

Java基础入门day44

day44 登录功能 代码实现 DBUtil.java package com.saas.util; ​ import java.sql.*; ​ public class DBUtil { ​private static final String DB_DRIVER "com.mysql.jdbc.Driver";private static final String DB_URL "jdbc:mysql://localhost:3306/saa…

数据结构复习/学习9--堆/堆实现/升降序建堆/top-k问题

一、堆与完全二叉树 1.堆的逻辑与物理结构 2.父节点与子节点的下标 3.大小根堆 二、堆的实现&#xff08;大根堆为例&#xff09; 注意事项总结&#xff1a; 注意堆中插入与删除数据的位置和方法与维持大根堆有序时的数据上下调整 三、堆排序 1.排升序建大堆效率高 注意事项…

Redis快速学习

Redis快速学习 一、 Redis快速入门1.1 初始Redis1.1.1 Redis的存储方式1.1.2 NoSQL 与 sql 之间的区别 1.2 Redis概述1.2.1 Redis是什么1.2.2 Redis有什么用1.2.3 Redis的特性 1.3 Redis安装测试1.3.1 Redis Linux安装 1.4 Redis测试工具1.5 Redis的基本知识 二、Redis的五大数…

HFSS-day3-HFSS的工作界面

工作界面也称为用户界面&#xff0c;是HFSS软件使用者的工作环境:了解、熟悉这个工作环境是掌握HFSS软件使用的第一步 HFSS工作环境介绍 1.HFSS工作界面简单的组成说明2.工作界面中各个工作窗口功能主菜单工具栏项目管理窗口属性窗口信息管理窗口进程窗口三维模型窗口 3.HFSS主…

gin自定义中间件

gin自定义中间件 代码 代码 package mainimport ("fmt""github.com/gin-gonic/gin""net/http""time" )// MyLogger 自定义中间件&#xff1a;方式二&#xff1a;通过定义函数&#xff0c;返回gin.HandlerFunc类型的函数&#xff0c;定…

解决vue elementUI el-tabs默认选项下划线不显示的问题

el-tabs初始加载时&#xff0c;el-tabs__active-bar的宽度为0&#xff0c;导致下划线不显示&#xff0c;因此设置其宽度即可&#xff1a; this.$nextTick((_) > {const activeBarElement document.getElementsByClassName("el-tabs__active-bar")[0];activeBarEl…

看完这个,你就懂了!IT审计到底是干什么的?如何做好IT审计?

01 大家应该都知道财务审计&#xff0c; 通俗讲&#xff0c;就是查账的。 看一下公司账上的数据是否准确&#xff0c; 每笔账是否都能合理溯源。 那IT审计到底是干什么的呢&#xff1f; 它和财务审计有什么关系吗&#xff1f; 这么跟你说吧&#xff0c; 现在很多公司都…

linux下dd制作启动U盘

dd命令是比较推荐的一种Linux环境中制作U盘启动盘的方式&#xff0c;无需安装额外的工具&#xff0c;基本上所有Linux发行版都集成了这个命令。 1、插入U盘&#xff1b; 2、打开终端&#xff1b; 3、确认U盘路径&#xff0c;在终端中输入&#xff1a;sudo fdisk -l 例如&am…

DInet

&#xff08;1&#xff09;数据&#xff1a; 1&#xff09;&#xff1a;随机获取5帧参考帧 2&#xff09;&#xff1a;处理这5帧连续帧&#xff0c;:source_frames:连续5帧的crop_moth b)audio_list:连续5帧的每一帧对应的5帧音频mel特征 c):refs:fintune 固定参考帧&#xff0…

通义千问-7B-Chat-Int4

通义千问-7B-Chat-Int4 代码仓库地址&#xff1a;https://github.com/QwenLM/Qwen 安装 克隆我们的仓库并跳转到相应目录 git clone https://www.modelscope.cn/qwen/Qwen-7B-Chat-Int4.git cd Qwen-7B-Chat-Int4 2. 创建 conda 环境 conda create -n qwenint4 python3.8…

1069 微博转发抽奖

solution #include<iostream> #include<string> #include<map> using namespace std; int main(){int n, m, s, loop 0, have 0;string id;map<string, int> mp;cin >> m >> n >> s;for(int i 1; i < m; i){//编号从1开始cin…