【Python】从基础到进阶(一):了解Python语言基础以及变量的相关知识

在这里插入图片描述

🔥 个人主页:空白诗

在这里插入图片描述

文章目录

    • 引言
    • 一、Python简介
      • 1.1 历史背景
      • 1.2 设计哲学
      • 1.3 语言特性
      • 1.4 应用场景
      • 1.5 为什么选择Python
    • 二、Python语言基础
      • 2.1 注释规则
        • 2.1.1 单行注释
        • 2.1.2 多行注释
        • 2.1.3 文件编码声明注释
      • 2.2 代码缩进
      • 2.3 编码规范
        • 2.3.1 命名规范
        • 2.3.2 每行字符数
        • 2.3.3 空行
        • 2.3.4 缩进
        • 2.3.5 运算符空格
        • 2.3.6 函数参数
        • 2.3.7 文档字符串(Docstring)
        • 2.3.8 模块导入
        • 2.3.9 不要在一行中使用多个语句
    • 三、Python中的变量
      • 3.1 变量的定义与使用
      • 3.2 常见数据类型
        • 数值类型
        • 序列类型
        • 集合类型
        • 映射类型
        • 3.2.1 整数(int)
        • 3.2.2 浮点数(float)
        • 3.2.3 复数(complex)
        • 3.2.4 字符串(str)
        • 3.2.5 列表(list)
        • 3.2.6 元组(tuple)
        • 3.2.7 字典(dict)
        • 3.2.8 集合(set)
        • 3.2.9 冻结集合(frozenset)
      • 3.3 动态类型与类型转换
      • 3.4 变量的作用域
        • 3.4.1 局部作用域
        • 3.4.2 全局作用域
    • 总结

在这里插入图片描述

引言

Python是一种广泛应用的高级编程语言,以其简洁易读的语法和强大的功能吸引了众多开发者。从Web开发、数据分析到人工智能,Python在各个领域都有着广泛的应用。本教程将带您从零开始,深入了解Python的基础知识,涵盖Python语言基础、变量和数据类型等内容。无论您是编程新手还是有经验的开发者,希望这篇文章能帮助您更好地掌握Python,为未来的编程之旅奠定坚实的基础。


一、Python简介

Python是一种高级、解释型、通用的编程语言,由Guido van Rossum于20世纪90年代初创立。Python以其简洁易读的语法和强大的功能而闻名,使其成为新手和经验丰富的开发人员的首选语言之一。

1.1 历史背景

Python的设计初衷是为了强调代码的可读性和简洁性。Guido van Rossum在1989年的圣诞节期间开始编写Python,目的是为了创建一种既能处理系统管理任务又能进行大规模应用开发的语言。1991年,Python 0.9.0版本发布,自此Python逐步发展成为一门功能强大且灵活的编程语言。

1.2 设计哲学

Python的设计哲学强调代码的可读性和简洁性,被总结为“Pythonic”风格。其核心思想包括:

  • 明确优于晦涩:代码应该是清晰的,容易理解的。
  • 简单优于复杂:应当尽量使用简单的解决方案。
  • 复杂优于凌乱:如果需要复杂性,应保持有条理。
  • 可读性很重要:代码不仅是写给机器执行的,更是写给人看的。

这些原则在Python的Zen of Python中有详细描述,可以通过在Python解释器中输入import this来查看。

1.3 语言特性

Python具有许多吸引开发者的特性:

  • 易读易写:Python的语法设计简洁明了,非常接近人类语言。
  • 丰富的标准库:Python拥有一个强大的标准库,涵盖了从网络编程到文本处理的各个方面,使开发者可以快速构建各种应用。
  • 跨平台:Python是跨平台的,可以在Windows、macOS和Linux等操作系统上运行。
  • 动态类型:Python是动态类型语言,变量在使用时可以随时改变其类型。
  • 解释执行:Python代码是逐行解释执行的,不需要编译,因此开发调试周期较短。
  • 社区支持:Python拥有一个活跃且庞大的社区,提供了丰富的第三方库和框架,帮助开发者快速解决各种问题。

1.4 应用场景

Python的广泛应用涵盖了多个领域:

  • Web开发:如Django、Flask等Web框架帮助快速构建高性能的Web应用。
  • 数据科学与机器学习:Pandas、NumPy、Scikit-learn等库使得数据处理与分析变得高效便捷。
  • 自动化脚本:Python的简洁语法使其成为编写自动化脚本的理想选择。
  • 人工智能与深度学习:TensorFlow、PyTorch等框架在AI与深度学习领域被广泛使用。
  • 科学计算:SciPy、Matplotlib等库广泛用于科学研究和数据可视化。

1.5 为什么选择Python

选择Python作为编程语言有许多原因:

  • 学习曲线平缓:Python的语法简洁,逻辑清晰,适合初学者学习。
  • 生产效率高:Python的高层次数据结构和动态类型结合快速原型开发能力,使得开发效率大大提高。
  • 强大的社区和生态系统:丰富的第三方库和活跃的社区支持,使得Python在解决实际问题时得心应手。
  • 多领域应用:无论是Web开发、数据分析、AI还是自动化,Python都能提供强有力的支持。

总之,Python因其简洁、高效和强大的功能而成为现代编程世界中不可或缺的一部分。无论你是初学者还是经验丰富的开发者,Python都能帮助你高效地完成各种任务。


二、Python语言基础

在这里插入图片描述

在开始编写Python代码之前,了解Python的注释规则、代码缩进和编码规范是非常重要的。这些基础知识不仅有助于编写清晰易懂的代码,还能提高代码的可维护性和团队协作效率。

2.1 注释规则

注释是代码中非执行的一部分,用于解释代码的意图、功能或逻辑。Python支持单行注释和多行注释。

2.1.1 单行注释

单行注释以井号 (#) 开头,井号后的内容会被解释器忽略。单行注释通常用于解释代码行的作用。

# 这是一个单行注释
print("Hello, World!")  # 这是在代码行末的注释
2.1.2 多行注释

Python没有专门的多行注释语法,但可以使用多个单行注释或者三引号字符串 ('''""") 来实现多行注释。尽管三引号字符串本质上是字符串,但如果它们不赋值给任何变量,则可以作为注释使用。

'''
这是一个多行注释
可以写在多行上
解释代码的详细信息
'''

"""
这是另一个多行注释的例子
同样可以写在多行上
"""
2.1.3 文件编码声明注释

在处理包含非ASCII字符的Python文件时,指定文件的编码方式是很重要的。Python源文件默认使用UTF-8编码,但你也可以显式声明文件的编码方式。文件编码声明通常放在文件的开头,通过特殊的注释来实现。

文件编码声明注释的格式如下:

# -*- coding: <encoding-name> -*-

例如,若要声明文件使用UTF-8编码,可以在文件的第一行或第二行添加如下注释:

# -*- coding: utf-8 -*-

#!/usr/bin/env python
# -*- coding: utf-8 -*-

第一种声明方法仅指定编码方式,而第二种方法则结合了Unix系统中的“shebang”行(用于指定脚本的解释器),并声明了文件编码。

下面是一个示例,包含中文字符并声明了文件编码:

# -*- coding: utf-8 -*-

print("你好,世界!")  # 输出包含中文字符的字符串

声明文件编码有助于避免在处理包含非ASCII字符的文件时出现编码错误,确保代码在不同环境中的一致性和可移植性。

综上所述,通过合理使用单行注释、多行注释和文件编码声明注释,可以显著提升代码的可读性、可维护性和兼容性。

2.2 代码缩进

代码缩进是Python语法的核心部分。Python使用缩进来表示代码块,不同于其他语言使用大括号 {} 或关键词(如 beginend)来界定代码块。正确的缩进不仅让代码更加美观,还能避免语法错误。

  • 缩进规范:Python官方建议每一级缩进使用4个空格,而不是使用制表符(Tab)。
  • 一致性:确保在整个代码中使用统一的缩进方式,要么全用空格,要么全用Tab,但推荐使用空格。

以下是一个使用缩进的示例:

if True:
    print("True")  # 这行缩进了4个空格
else:
    print("False")  # 这行也缩进了4个空格

2.3 编码规范

为了使Python代码更加规范和可读,Python社区提出了一系列编码规范,其中最著名的是PEP 8。以下是一些关键的编码规范:

2.3.1 命名规范
  • 变量名:使用小写字母和下划线(snake_case),如 my_variable
  • 函数名:同样使用小写字母和下划线(snake_case),如 my_function
  • 类名:使用大写字母开头的单词(PascalCase),如 MyClass
  • 常量名:使用全大写字母和下划线(UPPER_CASE),如 MY_CONSTANT
2.3.2 每行字符数

每行代码的字符数应尽量控制在79个字符以内,文档字符串或注释则限制在72个字符以内。超过这个长度时,应考虑换行。

# 这是一个例子,展示如何在长行代码中使用续行符
long_variable_name = (some_value + another_value - yet_another_value + 
                      more_values - last_value)
2.3.3 空行
  • 顶级定义(如函数和类)之间使用两个空行。
  • 类和函数内的方法之间使用一个空行。
class MyClass:
    
    def __init__(self):
        pass

    def my_method(self):
        pass


def my_function():
    pass
2.3.4 缩进
  • 使用空格:每级缩进使用4个空格,而不是制表符(Tab)。
  • 一致性:确保整个代码中使用统一的缩进方式。
def my_function():
    if True:
        print("Hello, World!")  # 这行缩进了4个空格
2.3.5 运算符空格
  • 运算符两侧加空格:在赋值(=)、比较(==)和算术运算符(+, -, *, /)的两侧加上空格。
x = 1
y = x + 2
if x == 1:
    print("x is 1")
2.3.6 函数参数
  • 函数参数间不加空格:在函数调用和定义时,参数之间不加空格。
# 函数定义时的参数无空格
def my_function(param1, param2):
    return param1 + param2

# 函数调用时的参数无空格
result = my_function(1, 2)
2.3.7 文档字符串(Docstring)
  • 函数和类的文档字符串:函数和类应使用三引号('''""")编写文档字符串,描述其功能、参数和返回值。
def my_function(param1, param2):
    """
    这是一个示例函数。

    参数:
    param1: 第一个参数
    param2: 第二个参数

    返回:
    两个参数的和
    """
    return param1 + param2
2.3.8 模块导入
  • 导入顺序:首先导入标准库模块,然后导入第三方模块,最后导入本地应用/库的特定模块。每组导入之间使用一个空行分隔。
  • 导入具体名称:尽量避免使用 from module import * 这种导入方式。
import os
import sys

import numpy as np
import pandas as pd

from my_module import my_function
2.3.9 不要在一行中使用多个语句
  • 单行单个语句:尽量避免在一行中使用多个语句。
x = 1
y = 2
print(x)
print(y)

通过遵循这些基础语法规则和编码规范,可以提高代码的可读性、可维护性和团队协作效率,为后续的Python编程打下坚实的基础。


三、Python中的变量

变量是编程中的基本概念之一,用于存储和操作数据。在Python中,变量的定义和使用相对简单,但理解变量的类型和作用范围对于编写高效、可靠的代码至关重要。

3.1 变量的定义与使用

在Python中,变量的定义不需要显式声明其类型,只需使用赋值语句即可:

x = 10  # 定义一个整数变量
name = "Alice"  # 定义一个字符串变量
pi = 3.14  # 定义一个浮点数变量
is_active = True  # 定义一个布尔变量

变量名应该具有描述性,以便代码的可读性和可维护性。变量名必须以字母(a-z,A-Z)或下划线(_)开头,后续字符可以是字母、数字(0-9)或下划线。变量名对大小写敏感。

3.2 常见数据类型

Python提供了多种内置数据类型,主要分为数值类型、序列类型、集合类型和映射类型。理解这些数据类型及其特性,有助于我们高效地进行数据处理和操作。下面将对这些常见数据类型进行详细介绍。

数值类型
  • 整数(int):没有小数部分的数字,范围可变。
  • 浮点数(float):带有小数部分的数字,通常用于表示需要精确到小数点的数值。
  • 复数(complex):包含实部和虚部的数字,格式为a + bj
序列类型
  • 字符串(str):由字符组成的不可变序列,用于表示文本。
  • 列表(list):有序的可变集合,可以包含任意类型的元素。
  • 元组(tuple):有序的不可变集合,一旦定义,元素不能被修改。
集合类型
  • 集合(set):无序的不重复元素集合,常用于去重和集合运算。
  • 冻结集合(frozenset):不可变的集合。
映射类型
  • 字典(dict):无序的键值对集合,每个键必须是唯一的,通常用于存储具有映射关系的数据。

下面是对这些数据类型的详细解释和示例代码。

3.2.1 整数(int)

整数是没有小数部分的数字,Python中的整数可以是任意大小。

a = 5
b = -10
c = 12345678901234567890
3.2.2 浮点数(float)

浮点数是带有小数部分的数字,通常用于表示需要精确到小数点的数值。

pi = 3.14159
gravity = 9.81
3.2.3 复数(complex)

复数包含实部和虚部,格式为 a + bj

z = 1 + 2j
print(z.real)  # 输出:1.0
print(z.imag)  # 输出:2.0
3.2.4 字符串(str)

字符串是由一系列字符组成的文本数据,可以使用单引号或双引号表示。

greeting = "Hello, World!"
name = 'Alice'

字符串是不可变的,这意味着字符串中的字符不能被修改。

3.2.5 列表(list)

列表是一个有序的可变集合,可以包含任意类型的元素。

numbers = [1, 2, 3, 4, 5]
names = ["Alice", "Bob", "Charlie"]
mixed = [1, "Alice", 3.14, True]

列表可以进行切片操作、添加、删除和修改元素。

3.2.6 元组(tuple)

元组是一个有序的不可变集合,一旦定义,元素不能被修改。

point = (1, 2)
rgb = (255, 0, 0)

元组通常用于表示一组相关的值。

3.2.7 字典(dict)

字典是一个无序的键值对集合,每个键必须是唯一的,通常用于存储具有映射关系的数据。

person = {"name": "Alice", "age": 25, "city": "New York"}
scores = {"math": 90, "english": 85}

可以通过键来访问、添加和修改字典中的值。

3.2.8 集合(set)

集合是一个无序的不重复元素集合,常用于去重和集合运算。

unique_numbers = {1, 2, 3, 4, 5}
names_set = {"Alice", "Bob", "Charlie"}
3.2.9 冻结集合(frozenset)

冻结集合与集合类似,但不可变。

frozen_set = frozenset([1, 2, 3, 4, 5])

通过了解和掌握这些常见的数据类型及其特性,可以在编写Python代码时更灵活地处理不同类型的数据。

3.3 动态类型与类型转换

Python是动态类型语言,变量的类型是在运行时确定的,并且可以随时更改。

x = 10  # 整数
x = "Hello"  # 现在是字符串

可以使用内置函数进行类型转换:

x = 3.14
y = int(x)  # 将浮点数转换为整数,结果为3

s = "123"
n = int(s)  # 将字符串转换为整数,结果为123

b = bool(1)  # 将整数转换为布尔值,结果为True

3.4 变量的作用域

变量的作用域决定了变量在程序中的可见性和生命周期。Python中的作用域分为局部作用域、全局作用域和内建作用域。

3.4.1 局部作用域

局部变量是在函数内部定义的变量,只在函数内部可见。

def my_function():
    x = 10  # 局部变量
    print(x)

my_function()
print(x)  # 这里会报错,因为x在函数外部不可见
3.4.2 全局作用域

全局变量是在函数外部定义的变量,可以在整个模块中访问。

x = 10  # 全局变量

def my_function():
    print(x)  # 可以访问全局变量

my_function()
print(x)  # 全局变量可以在函数外部访问

使用 global 关键字可以在函数内部修改全局变量。

x = 10

def my_function():
    global x
    x = 20

my_function()
print(x)  # 结果为20

通过理解和掌握这些基本概念和操作,你可以有效地在Python中使用变量,为后续的编程打下坚实的基础。


总结

通过本教程,我们系统地介绍了Python的基础知识,包括注释规则、代码缩进和编码规范等Python语言基础,以及Python中的变量和常见数据类型。掌握这些基础知识,您将能够编写出更规范、可读性更高的Python代码。这不仅有助于提高您的编程效率,还能为后续深入学习和应用Python打下坚实的基础。希望您能通过不断实践,进一步巩固所学知识,逐步迈向Python编程的更高水平。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

汉诺塔问题-递归

面试题 08.06. 汉诺塔问题 - 力扣&#xff08;LeetCode&#xff09; 递归问题&#xff0c;一定相信调用的这个函数传参进去能解决好问题&#xff0c;就是不用展开具体的递归图&#xff1b; class Solution { public:void hanota(vector<int>& A, vector<int>&…

中石化加油卡有什么用?

对于有车一族来说&#xff0c;有一张加油卡真的可以省下不少钱 但是像我们这种没车的人&#xff0c;即使得到加油卡也毫无用武之地 久而久之&#xff0c;难免会造成卡过期的情况出现 还好&#xff0c;前两天把我手上堆积了好久的加油卡在收卡云上卖出去了&#xff0c;99折真…

6月21日(周五)欧美股市总结:“三巫日”英伟达继续拉低标普纳指,道指全周涨1.5%为5月来最佳,钯金一度涨11%

内容提要 美国二手房销售减速且房价新高&#xff0c;服务业PMI初值两年多最高&#xff0c;盘中标普和纳指转涨未果&#xff0c;标普连涨三周&#xff0c;纳指连续两日跌离新高抹去全周涨幅&#xff0c;道指连涨四日站稳四周高位。微软谷歌收创新高&#xff0c;英伟达盘中跌5%后…

Nutch爬虫在大数据采集中的应用案例

引言 在当今信息爆炸的时代&#xff0c;大数据的价值日益凸显。网络作为信息的海洋&#xff0c;蕴藏着丰富的数据资源。Nutch&#xff0c;作为一个开源的Java编写的网络爬虫框架&#xff0c;以其高效的数据采集能力和良好的可扩展性&#xff0c;成为大数据采集的重要工具。本文…

外星人Alienware m15R7 原厂Windows11系统

装后恢复到您开箱的体验界面&#xff0c;包括所有原机所有驱动AWCC、Mydell、office、mcafee等所有预装软件。 最适合您电脑的系统&#xff0c;经厂家手调试最佳状态&#xff0c;性能与功耗直接拉满&#xff0c;体验最原汁原味的系统。 原厂系统下载网址&#xff1a;http://w…

LCR 142.训练计划IV

1.题目要求: /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ int compare(const void* a,const void* b) {return (*(int*)a - *(int*)b); } struct ListNode* trainningPlan(struct ListNode* l1, struct Li…

C++ STL ③

sort排序 #include <iostream> #include <algorithm> using namespace std;int main() {int a[5],i;cout<<"请输入数组元素:"<<endl;for(i0;i<5;i){cin>>a[i];}sort(a,a5,greater<int>());for(i0;i<5;i){cout<<a[i…

尚品汇-(三)

maven之packaging标签 &#xff08;1&#xff09;项目创建父模块 首先设置 下Maven Maven&#xff1a;仓库地址&#xff1a;这里是腾讯云仓库 作为父模块&#xff0c;src没用&#xff0c;干掉src 这里我们是Maven创建的项目&#xff0c;想要项目变成SpringBoot的项目&#xf…

Linux驱动调试——使用DEVICE_ATTR实现cat、echo指令调试驱动

在平常做一些驱动调试的时候&#xff0c;每次都写应用去调试相对较麻烦&#xff0c;有一个非常便捷的操作方法就是使用device_attr&#xff0c;只需要执行shell指令例如echo和cat就可以看到效果&#xff0c;不需要再单独写一个测试demo。 看网上很多博客在这一块的使用上写的都…

深度神经网络——什么是小样本学习?

引言 小样本学习是指使用极少量的训练数据来开发人工智能模型的各种算法和技术。小样本学习致力于让人工智能模型在接触相对较少的训练实例后识别和分类新数据。小样本训练与训练机器学习模型的传统方法形成鲜明对比&#xff0c;传统方法通常使用大量训练数据。小样本学习是 主…

DAY10-力扣刷题

1.最后一个单词的长度(简单) 58. 最后一个单词的长度 - 力扣&#xff08;LeetCode&#xff09; 给你一个字符串 s&#xff0c;由若干单词组成&#xff0c;单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子…

机器学习python实践——由特征选择引发的关于卡方检验的一些个人思考

最近在用python进行机器学习实践&#xff0c;在做到特征选择这一部分时&#xff0c;对于SelectPercentile和SelectKBest方法有些不理解&#xff0c;所以去了查看了帮助文档&#xff0c;但是在帮助文档的例子中出现了"chi2"&#xff0c;没接触过&#xff0c;看过去就更…

MySQL存储管理(一):删数据

从表中删除数据 从表中删除数据&#xff0c;也即是delete过程。 什么是表空间 表空间可以看做是InnoDB存储引擎逻辑结构的最高层&#xff0c;所有的数据都存放在表空间中。默认情况下&#xff0c;InnoDB存储引擎有一个共享表空间idbdata1&#xff0c;即所有数据都存放在这个表…

20.Cargo和Crates.io

标题 一、采用发布配置自定义构建1.1 默认配置1.2 修改配置项 二、将crate发布到Crates.io2.1 编写文档注释2.2 常用&#xff08;文档注释&#xff09;部分2.3 文档注释作用测试2.4 为包含注释的项添加文档注释2.5 使用pub use导出公有API2.6 创建Crates.io账号2.7 发布2.8 版本…

基于STM8系列单片机驱动LCD12864液晶程序

1&#xff09;单片机/ARM硬件设计小知识&#xff0c;分享给将要学习或者正在学习单片机/ARM开发的同学。 2&#xff09;内容属于原创&#xff0c;若转载&#xff0c;请说明出处。 3&#xff09;提供相关问题有偿答疑和支持。 LCD12864支持串行和并行的通信传输方式&#xff…

NeRF从入门到放弃3: EmerNeRF

https://github.com/NVlabs/EmerNeRF 该方法是Nvidia提出的&#xff0c;其亮点是不需要额外的2D、3Dbox先验&#xff0c;可以自动解耦动静field。 核心思想&#xff1a; 1. 动、静filed都用hash grid编码&#xff0c;动态filed比静态多了时间t&#xff0c;静态的hash编码输入是…

C语言笔试题:实现把一个无符号整型数字的二进制序列反序后输出

目录 题目 实例 方法一&#xff1a;直接交换 方法二&#xff1a;间接交换 拓展 题目 编写一个函数&#xff0c;将一个无符号整数的所有位逆序&#xff08;在32位机器下&#xff09; 实例 例如有一个无符号整数 unsigned int num 32; unsigned int 在32位系统中占4个字…

如何选择优质智慧公厕系统厂家?@光明源

随着智慧城市建设的推进&#xff0c;智慧公厕系统成为提升城市公共服务水平的重要一环。选择一家优质的智慧公厕系统厂家不仅能确保设备的先进性和可靠性&#xff0c;还能提升用户体验和管理效率。以下是选择优质智慧公厕系统厂家的关键要素。 1. 厂家资质和信誉 1.1 资质认证…

VS C++常用错误与解决方法

无法找到 v143 的生成工具(平台工具集 “v143”) 若要使用 v143 生成工具进行生成&#xff0c;请安装 v143 生成工具。或者&#xff0c;可以升级到当前 Visual Studio 工具&#xff0c;方式是通过选择“项目”菜单或右键单击该解决方案&#xff0c;然后选择“重定解决方案目标…

外星人Alienware m18R1 原厂Windows11系统

装后恢复到您开箱的体验界面&#xff0c;包括所有原机所有驱动AWCC、Mydell、office、mcafee等所有预装软件。 最适合您电脑的系统&#xff0c;经厂家手调试最佳状态&#xff0c;性能与功耗直接拉满&#xff0c;体验最原汁原味的系统。 原厂系统下载网址&#xff1a;http://w…