1. Python的特性和语法

閱讀時間約 14 分鐘

千里之行始于足下。

大家好,我是茶桁,这里是我们《AI秘籍》的第一节,让我们先从Python来开始好好的打好基础。

第一堂课,我们先从最基础的Python特性开始,当然,还有一些基本语法。

上来就开始讲特性和语法,说明我们将会遗弃惯用的“环境搭建”等更基础的内容,那些内容网上已经很丰富了,一查一大堆,并且相对来说内容都比较独立,所以希望还不太会搭建开发环境的同学可以自己去搜索看看。或者,其实从我这篇《Apple M1的AI环境搭建》也能完全搭建起一个完整的Python开发环境。(Windows和Linux的同学就只能在网上搜索一下看看了。)

总体来说,Python语言的使用率越来越高,它不仅可以用于GUI开发、Web开发,还能进行数据预处理、数据探索性分析(EDA),更是进行数据挖掘、机器学习、深度学习等任务的首选语言。

基于Python的包也越来越丰富,各种优秀的库层出不穷。根据"Tiobe编程语言排行榜"的最新统计,Python结束了自己攀爬的势头,已经开始长期占据榜首。Python的发展势头让人们看到了它在各个领域都有着广阔的应用前景。

raw-image

得益于Python语言的简洁语法和高效开发能力,使得集成系统变得非常方便。

与此同时,Python相关的就业机会也非常丰富,待遇也相当优渥。

因此,无论从易用性、就业机会还是薪酬待遇来看,Python都是IT从业者必备的编程语言之一。

课程说明

  1. 本课程所使用语言为Python3
  2. 本课程将会有一些案例,用于辅助学习和理解知识点。
  3. 基本所有案例均使用Jupyter Notebook做演示
  4. 一些项目会用到软件工程和设计模式的思想。
  5. 本课程无任何文学色彩,重点在于简单通俗易懂。

接下来,让我们真实开始吧。

Python的两大特性

一句话总结,就是Python是一门动态的、强类型语言。

动态语言

在了解“动态语言”之前,我们先来了解一下“类型检查”。

类型检查是验证变量或表达式的数据类型是否符合语言规定的类型约束的过程。它用于确保程序在运行时不会出现类型错误,例如将一个字符串与一个整数相加或将一个数字与一个布尔值进行比较。类型检查旨在捕捉潜在的类型不匹配错误,并在编译时或运行时提供相应的警告或错误信息。

如果类型检查发生在程序运行阶段(运行时),则称为"动态类型语言"(dynamically typed languages)。常见的动态语言包括:

  • Python
  • JavaScript
  • Ruby
  • PHP
  • Lua
  • Perl
  • Shell脚本

有动态语言,则必然会有其相对的“静态语言”,常见的“静态类语言”包含:

  • C
  • C++
  • Java
  • C#
  • Swift
  • Kotlin
  • Rust
  • TypeScript

当然,这些都只是一部分常见的动态语言和静态类型语言,还有许多其他编程语言也属于这两个类别。在实际开发中,选择使用动态语言还是静态类型语言取决于项目的需求、开发团队的喜好和项目的规模等因素。每种类型的语言都有其独特的特点和适用场景,因此选择合适的语言是非常重要的。

强类型语言

强类型语言(Strongly Typed Language)要求在编程过程中严格定义和遵守数据类型规则。在强类型语言中,变量必须明确地声明其数据类型,并且在运行时不能隐式地改变数据类型。这意味着变量在使用之前必须进行类型转换,以确保数据的一致性和安全性。

在强类型语言中,编译器或解释器会对数据类型进行严格的检查,如果发现不符合类型规则的操作,就会报错并拒绝执行。这样可以防止一些潜在的类型错误,确保程序的稳定性和正确性。

强类型语言的主要特点包括:

  1. 静态类型检查:在编译时或解释时进行类型检查,检查数据类型是否匹配,避免类型不匹配的错误。
  2. 显式类型转换:在进行类型转换时,必须显式地指定转换的方式,例如强制类型转换。
  3. 不支持隐式类型转换:强类型语言不允许在不明确声明的情况下将一个数据类型隐式地转换为另一个数据类型。

这么说可能并不直接,我们来拿个示例,我们输入两行代码:

 a = 5
 a = a + 's'

然后我们会看到程序抛出TypeError异常:

raw-image

这个异常意思是不支持int变量str变量相加。

常见的强类型语言包括:

  • Java
  • C++
  • C#
  • Python
  • Swift
  • Kotlin
  • TypeScript
  • Rust
  • Pascal
  • Ada
  • Delphi

一样的,对应的就是弱类型语言。弱类型语言容易与其他类型混合计算,其代表是JavaScript。(有一说一,我还挺喜欢JS的这个特性的)

raw-image

弱类型语言包括:

  • JavaScript
  • PHP
  • Perl
  • Ruby
  • Tcl
  • Bash
  • AWK
  • MATLAB (在一些操作上可以被视为弱类型)

当然,对于这个划分其实并不是所有人都一致的,有些人还是会把Python归结为弱类型语言,而通常意义上,大家会把C++划分到弱类型。这里我们不去争论,仅仅记住动态/静态、弱类型/强类型的区别就行了。

基本语法

基本语法里,我们介绍一下Python的命名规则、缩进原则、特殊关键字和特殊运算符四个方面。

命名规则

Python的变量命名规则包括以下几条:

  1. 允许包括英文、数字以及下划线(_),不能以数字开头。
  2. 名称区分大小写,例如"myVar"和"myvar"是两个不同的变量。
  3. 以单下划线(_)开头的变量通常用作受保护的变量,表示应该将其视为私有,不建议直接访问。虽然Python没有严格的访问控制,但这是一种约定俗成的做法。
  4. 以双下划线(__)开头和结尾的变量是Python中的特殊标识符,具有特殊的意义,如类的私有成员或专用标识符。

Python的变量命名习惯一般遵守蛇形命名法(snake case):

  1. 一般变量命名使用小写字母,多个单词之间用下划线连接,例如:book_id、book_store_count。
  2. 类名首字母大写,如Python内置模块collections.abc中的Iterable类,我们自定义的Book类等。
  3. 类方法名也使用小写字母,多个单词之间用下划线连接,例如:get_store_count()。

与Java的命名方法不同,Java通常使用驼峰命名法(camel case)来命名变量和方法名,其中第一个单词首字母小写,后续单词首字母大写,例如:myVar、getStoreCount()。而Python则更倾向于使用蛇形命名法。这是因为Python社区普遍认可了蛇形命名法,使得代码在风格上更加一致和易读。


缩进原则

Python最具特色的特点之一是使用缩进来表示代码的逻辑层次,而不是像Java和C++中使用{}。Python的缩进层级结构非常重要,它代表着代码的逻辑结构。

通常情况下,Python的缩进为4个空格字符。例如,在定义一个Book类并重写add方法来计算两本书的库存量时,代码如下所示:

 class Book(object):
     
     # 定义类的参数
     def __init__(self, b_id, b_name, b_store_count):
         self.b_id = b_id
         self.b_name = b_name
         self.b_store_count = b_store_count
 ​
     # 重写加法操作
     def __add__(self, book):
         return self.b_store_count + book.b_store_count
     
 # 创建两个Book类的实例
 python_intro_book = Book(1, '金瓶梅', 100)
 ml_intro_book = Book(2, '玉蒲团', 200)
 ​
 # 求两本书的总销量
 sales_cnt = python_intro_book + ml_intro_book
 print(sales_cnt)

上述代码定义了一个Book类,包括初始化方法__init__和重写的加法操作__add__。通过这种缩进结构,我们可以清晰地看到代码的层次结构和逻辑。

在Python编码中,缩进格式、行间空行数、变量和等号之间的空格等都遵循PEP8(Python Enhancement Proposal 8)规范。可以使用autopep8包来自动实现PEP8规范,保持代码的规范和易读性。

特殊关键字

Python有35个关键字,这些关键字具有特殊的含义,不能用于自定义变量名,否则会引起语法错误。以下是Python的关键字列表:

 False      await      else       import     pass
 None       break      except     in         raise
 True       class      finally    is         return
 and        continue   for        lambda     try
 as         def        from       nonlocal   while
 assert     del        global     not        with
 async      elif       if         or         yield

这些关键字在Python编程中扮演着重要的角色。其中,TrueFalse用于表示布尔值的真和假,类似于Java中的truefalseNone表示空值,类似于Java中的null;Python使用not表示逻辑反操作,而Java使用!;Python使用and表示两个条件同时满足,Java使用&&;Python使用or表示两个条件满足其一,Java使用||;Python使用elif,而Java使用else if

还有一些比较特殊的关键字,例如:

  • del用于删除可迭代对象中的某个元素;
  • def用于定义函数;
  • 带有yield的关键字用于定义生成器(generator)函数;
  • globalnonlocal是在Python函数式编程的闭包场景中使用的。

pass关键字用于占位,当你在定义函数或类时暂时不想添加具体的实现时,可以使用pass关键字。

这些关键字的具体用法将在后续文章中更详细地介绍。在此,先对它们有一个整体的认识即可。

特殊运算符

Python的运算符包括:

 +       -       *       **      /       //      %      @
 <<      >>      &       |       ^       ~       :=
 <       >       <=      >=      ==      !=

大部分运算符在其他编程语言中也是常见的,不过这里重点介绍三个比较特殊的运算符://**:=

//运算符用于两个数值相除并向下取整,类似于Python的math.floor()功能:

 print(5 // 2)   # 输出: 2
 print(5 // 4.5) # 输出: 1.0

**运算符用于进行幂运算:

 print(2 ** 3) # 输出: 8

:=运算符是在Python 3.8版本中引入的,被形象地称为“海象运算符”。它可以在表达式中同时为变量赋值和比较:

 n = len(a)
 if n > 10:
     print(f"{n}大于10")

可以用“海象运算符”简化为:

 if (n := len(a)) > 10:
     print(f"{n}大于10")

Python的比较运算符还支持链式比较,使得编码更加方便:

 i = 3
 print(1 < i < 3)  # 输出: False
 print(1 < i <= 3) # 输出: True

此外,运算符@用于装饰器功能,本专栏会深入解释它的本质,并提供相关案例,帮助你学会使用装饰器。

总结

在本文中,我们一起学习了Python这门功能强大的编程语言。Python的两大特性是动态语言和强类型语言。

动态语言意味着在运行时执行类型检查,而不是在编译时。这使得Python更加灵活和易于使用,允许我们在代码中动态创建和修改变量。Python的动态特性使其成为进行数据预处理、数据探索性分析、数据挖掘、机器学习和深度学习等任务的首选语言。

另一方面,强类型语言意味着变量的类型在声明时就已经确定,并且不能进行隐式类型转换。这确保了代码的稳定性和安全性,帮助我们避免一些常见的错误。

在Python的基本语法方面,我们学习了变量命名规则,缩进原则,特殊关键字和特殊运算符。Python的命名规则允许使用英文、数字和下划线,但不能以数字开头,并且区分大小写。特殊关键字包括Python的35个关键字,如if、else、for、while等等,它们有着特定的含义和用途。特殊运算符中,//用于整数除法,**用于幂运算,:=是在Python 3.8版本中引入的“海象运算符”,使得在表达式中同时为变量赋值和比较变得更加方便。

通过学习Python的特性和基本语法,我们已经具备了编写简单到复杂的程序的基础知识。Python的易用性、丰富的库和社区支持,使其成为一个优秀的编程语言,适用于各种应用场景。无论是初学者还是有经验的开发者,Python都是一个值得深入学习和探索的语言。

希望本文能够为读者提供了一个对Python的初步认识,并激发了你继续学习和研究的兴趣。在接下来的学习过程中,我们可以更深入地了解Python的各种功能和应用领域,并用Python来解决更复杂的问题。

好了,我是茶桁,咱们下节见。

avatar-img
9會員
62內容數
从基础开始,再到Python,然后是CV、BI、NLP等相关技术。从头到尾详细的教授一边人工智能。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
茶桁的沙龍 的其他內容
Hi,大家好。我是茶桁。 前两节我们学习了基本的Python特性和语法,并且认识了一些基本的Python脚本。今天,我们来学习一下Python的运算符,而我们选择的版本为Python3。 什么是运算符 为了能让我们的学习顺利进行下去,首先我们需要先弄明白:什么是运算符。 这里举一个简单的栗子
Hi,大家好。我时茶桁。 最近,我花了几天时间仔细思考了一下即将要开始写的专栏《AI秘籍》,再根据自己的能力大概规划了一下。目前大致已经理出了一些相关信息可以分享给大家。 专栏形式 本次专栏应该会以文章的形式先和大家见面,后续还会根据能力以原本的文章为准录制视频版本。 专栏平台 就如前一篇
Hi, 大家好,我是茶桁,这里为自己做个广告,目前打算开始写一整个系列《AI秘籍》。 这一段时间内我写过一个系列《零基础学习大语言模型》(目前还没写完)。 说实话,这个系列其实原出处并不是我,严谨的说来,有涉嫌擦边“洗稿”的嫌疑,所以最后放弃了收费的想法,仅仅对一些模型,资源以及计算结果进行了补
Hi,大家好。我是茶桁。 前两节我们学习了基本的Python特性和语法,并且认识了一些基本的Python脚本。今天,我们来学习一下Python的运算符,而我们选择的版本为Python3。 什么是运算符 为了能让我们的学习顺利进行下去,首先我们需要先弄明白:什么是运算符。 这里举一个简单的栗子
Hi,大家好。我时茶桁。 最近,我花了几天时间仔细思考了一下即将要开始写的专栏《AI秘籍》,再根据自己的能力大概规划了一下。目前大致已经理出了一些相关信息可以分享给大家。 专栏形式 本次专栏应该会以文章的形式先和大家见面,后续还会根据能力以原本的文章为准录制视频版本。 专栏平台 就如前一篇
Hi, 大家好,我是茶桁,这里为自己做个广告,目前打算开始写一整个系列《AI秘籍》。 这一段时间内我写过一个系列《零基础学习大语言模型》(目前还没写完)。 说实话,这个系列其实原出处并不是我,严谨的说来,有涉嫌擦边“洗稿”的嫌疑,所以最后放弃了收费的想法,仅仅对一些模型,资源以及计算结果进行了补
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
程式語言 python 的介紹 Python 是一種廣泛使用的高級程式語言,它強調簡潔、易讀和易於上手。由於其設計理念的優秀和豐富的功能,Python 在許多領域都廣受歡迎,包括軟體開發、資料科學、人工智慧、網路開發和自動化等。 首先,Python 以其簡潔而清晰的語法而聞名。它使用縮排來結構化程式
Thumbnail
今天想跟大家分享一個用python做的小遊戲,叫做1A2B,這個遊戲的規則很簡單,就是電腦會隨機產生一個四位數的數字,然後玩家要猜這個數字是什麼,每次猜完,電腦會給出幾A幾B的提示,A表示位置和數字都對,B表示數字對但位置不對;例如,如果電腦產生的數字是1234,玩家猜5678,那麼電腦會回
Thumbnail
本篇將帶你學習 Python 的基本語法和資料型態。我們將從變數和資料型態開始,包括整數、浮點數、字串和布林值。接著,我們將探討輸入和輸出的方法,讓你能夠與使用者進行互動。最後,我們會介紹基本運算符和運算子,以進行數值計算。通過這些學習筆記,你將輕鬆掌握 Python 的基礎知識,讓我們開始吧!
Thumbnail
去這邊點選開啟sd的webui-user.bat程式先會跟你說9009 把這個bat右鍵筆記本編輯會發現,set PYTHON=路徑是空的,那我們就去把後面的路徑補上改成下面這個 set PYTHON=D:\StableDiffusion\system\python\python.exe 接下來
Thumbnail
一、套件安裝 在使用Python操控Excel前,需要先安裝openpyxl模組。 二、建立工作簿 不需要先建立Excel檔案,就可以開始使用openpyxl;只要引用Workbook類別,就可以開始工作。 一個工作簿被建立起來的時候,至少會含有一張工作表。你可以用active屬性來使用這張工作表。
Thumbnail
「品酒」已經不再是有錢人的權利,在這個美酒當道的年代,我們要如何像 Somm 電影的品酒師,一口就能辨別出「口感」、「年份」、「產地」,甚至預測下一季爆款的酒呢? 情境: 這時候,機器學習與深度學習都是相當好的辦法,但我們要成為好的品酒工程師之前,我們必須學會理解「數據來源」、「產業知識」、「演算法
Thumbnail
先設定一個url,並使用get將資料load下來,然後轉成text。 使用pd.read_csv去讀資料,會有' " '與' = '的部分要用下面的code去掉。 這樣會得到一個基本的DataFrame。 將此段cod寫成一個函式如下圖 start_date會是今天的日期,n會是想要抓的天數。
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
程式語言 python 的介紹 Python 是一種廣泛使用的高級程式語言,它強調簡潔、易讀和易於上手。由於其設計理念的優秀和豐富的功能,Python 在許多領域都廣受歡迎,包括軟體開發、資料科學、人工智慧、網路開發和自動化等。 首先,Python 以其簡潔而清晰的語法而聞名。它使用縮排來結構化程式
Thumbnail
今天想跟大家分享一個用python做的小遊戲,叫做1A2B,這個遊戲的規則很簡單,就是電腦會隨機產生一個四位數的數字,然後玩家要猜這個數字是什麼,每次猜完,電腦會給出幾A幾B的提示,A表示位置和數字都對,B表示數字對但位置不對;例如,如果電腦產生的數字是1234,玩家猜5678,那麼電腦會回
Thumbnail
本篇將帶你學習 Python 的基本語法和資料型態。我們將從變數和資料型態開始,包括整數、浮點數、字串和布林值。接著,我們將探討輸入和輸出的方法,讓你能夠與使用者進行互動。最後,我們會介紹基本運算符和運算子,以進行數值計算。通過這些學習筆記,你將輕鬆掌握 Python 的基礎知識,讓我們開始吧!
Thumbnail
去這邊點選開啟sd的webui-user.bat程式先會跟你說9009 把這個bat右鍵筆記本編輯會發現,set PYTHON=路徑是空的,那我們就去把後面的路徑補上改成下面這個 set PYTHON=D:\StableDiffusion\system\python\python.exe 接下來
Thumbnail
一、套件安裝 在使用Python操控Excel前,需要先安裝openpyxl模組。 二、建立工作簿 不需要先建立Excel檔案,就可以開始使用openpyxl;只要引用Workbook類別,就可以開始工作。 一個工作簿被建立起來的時候,至少會含有一張工作表。你可以用active屬性來使用這張工作表。
Thumbnail
「品酒」已經不再是有錢人的權利,在這個美酒當道的年代,我們要如何像 Somm 電影的品酒師,一口就能辨別出「口感」、「年份」、「產地」,甚至預測下一季爆款的酒呢? 情境: 這時候,機器學習與深度學習都是相當好的辦法,但我們要成為好的品酒工程師之前,我們必須學會理解「數據來源」、「產業知識」、「演算法
Thumbnail
先設定一個url,並使用get將資料load下來,然後轉成text。 使用pd.read_csv去讀資料,會有' " '與' = '的部分要用下面的code去掉。 這樣會得到一個基本的DataFrame。 將此段cod寫成一個函式如下圖 start_date會是今天的日期,n會是想要抓的天數。