Skip to content

在macOS上安装Python

如果你正在使用Mac,那么系统自带的Python版本是2.x。要安装最新的Python 3.x,有两个方法:

方法一:从Python官网下载Python 3 macOS版的安装程序,下载后双击运行并安装;

方法二:如果安装了包管理器Homebrew,直接通过命令brew install python3安装即可。Homebrew 不会在全局把 python、pip 直接指到 3.14,避免和系统或其它 Python 冲突。若需要「无版本号」的 python / pip,它们在:/opt/homebrew/opt/python@3.14/libexec/bin,若要用它们,可把该目录加到 PATH 前面,例如(zsh):export PATH="/opt/homebrew/opt/python@3.14/libexec/bin:$PATH",然后重新打开命令行窗口输入python --version,即可看到最新的Python版本

输出

print()在括号中加上字符串,就可以向屏幕上输出指定的文字。比如输出hello, world,用代码实现如下:

python
print('hello, world')
# print函数也可以接受多个字符串
print("Hello, World!", "Hello, Python!", "Hello, World!")
# 可以接受更多的参数,诸如sep多个参数之间的分隔符。
print('The quick brown fox', 'jumps over', 'the lazy dog', sep="\n")

输入

如果要让用户从电脑输入一些字符怎么办?Python提供了一个input(),可以让用户输入字符串,并存放到一个变量里。比如输入用户的名字:

python
name = input("请输入姓名:")
print("你输入的姓名是:" + name)

注释

注意:虽然多行字符串在这里被当作多行注释使用,但它实际上是一个字符串,我们只要不使用它,它不会影响程序的运行。这些字符串在代码中可以被放置在一些位置,而不引起实际的执行,从而达到注释的效果。

python
# 这是单行注释
a = 100
'''
这里是多行注释
由前面的三个单/双引号和后面的三个单/双引号包裹
'''

在 Python 中,多行注释是由三个单引号 ''' 或三个双引号 """ 来定义的,而且这种注释方式并不能嵌套使用。当你开始一个多行注释块时,Python 会一直将后续的行都当作注释,直到遇到另一组三个单引号或三个双引号。

python
'''
这是外部的多行注释
可以包含一些描述性的内容

    '''
    这是尝试嵌套的多行注释
    会导致语法错误
    '''
'''

在这个例子中,内部的三个单引号并没有被正确识别为多行注释的结束,而是被解释为普通的字符串。

这将导致代码结构不正确,最终可能导致语法错误。

如果你需要在注释中包含嵌套结构,推荐使用单行注释(以#开头)而不是多行注释。

单行注释可以嵌套在多行注释中,而且不会引起语法错误。例如:

python
'''
这是外部的多行注释
可以包含一些描述性的内容

# 这是内部的单行注释
# 可以嵌套在多行注释中
'''

数据类型

布尔值

在Python中,可以直接用TrueFalse表示布尔值(请注意大小写),也可以通过布尔运算计算出来。

布尔值可以用andornot运算。

and运算是与运算,只有所有都为Trueand运算结果才是True

python
a = True and True # true
b = True and False # false
c = False and False # false

or运算是或运算,只要其中有一个为Trueor运算结果就是True

python
a = True or True # true
b = True or False # true
c = False or False # false

not运算是非运算,它是一个单目运算符,把True变成FalseFalse变成True

python
a = not True # false
b = not False # true
c = not 1 > 2 # true

空值

空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。

python
a = None
print(a) # None
print(a is None) # True

Python的内置关键字

一共35个

and、or、not

python
 1. andornot (逻辑运算符)
a = 5 > 3 and 1 < 2
b = 5 > 3 or 1 > 2
c = not (5 < 3)
print(a, b, c)

if、elif、else

python
# 2.if、elif、else(条件语句)
age = int(input("请输入您的年龄:"))
if age < 18:
    print(f"您的岁数是{age},是一个未成年人")
elif age < 40:
    print(f"您的岁数是{age},是一个青年人")
else:
    print(f"您的岁数是{age},是一个中老年人")

for、while

python
languages = ["python", "java", "ruby"]
for i in languages: 
  print(i,end="|")

True、False

continue、break

pass

try、except、finally、raise

import、from、as

def、return

class

lambda

del

global、nonlocal

in、is

python
# in、is(判断语句)
print("h" in "hello")
print(2 not in [1, 2, 3])
l1 = [1, 2, 3]
l2 = l1.copy()
l3 = l1
print(l1 is l2)
print(l1 is l3)

None

assert

with

yield

async、await

type

python
a = 1
b = 3.14
c = True
d = None
e = "Hello, World!"
print(type(a))
print(type(b))
print(type(c))
print(type(d))
print(type(e))

输出结果如下:

shell
<class 'int'>
<class 'float'>
<class 'bool'>
<class 'NoneType'>
<class 'str'>

Python的module模块

方式一import 模块名

这个相当于整体导入

python
import random

a = random.randint(1, 100)
print(a)

方式二from...import ...

from 模块名 import 函数名称或变量名称(多个函数名使用逗号分割)

这个相当于按需导入

python
from random import randint, random, randbytes

a = randint(1, 2)
b = random()
c = randbytes(10)
print(a)
print(b)
print(c)

循环结构

for循环

for 临时变量 in 数据容器:

​ 循环满足条件时执行的代码

python
list = [1, 2, 3, 4, 5]
for i in list:
  print(i)

range函数的使用

range()函数用于生成一个整数序列,其基本语法为range(start, stop[, step]),其中start是起始值,默认为0;stop是终止值,但注意这个终止值是不包含在生成的序列中的;step是步长,默认为1。range() 函数可创建一个整数列表,一般用在 for 循环中。

python
for i in range(0, 10):
  print(i)
  # 输出0,1,2,3,4,5,6,7,8,9

break关键字

结束剩下的所有的循环。

python
for i in range(1, 10):
  if i == 5:
    print('跳出当前的循环')
    break
  print('这是第{}次循环'.format(i))

continue关键字

跳过当前的这一次不符合条件的循环,整体不结束。

python
for i in range(1, 10):
  if i == 5:
    print('跳过当前的循环')
    continue
  print('这是第{}次循环'.format(i))

List列表

序列是 Python 中最基本的数据结构。序列中的每个值都有对应的位置值,称之为索引,第一个索引是 0,第二个索引是 1,依此类推。Python 有 6 个序列的内置类型,但最常见的是列表和元组。列表中的成员可以是任何类型。 bnn

python
users= ['admin', 'user1', 'user2', 'user3', 'user4', 'user5']
for user in users:
  if user == 'admin':
    print('管理员用户'+user)
    continue
  print('普通用户'+user)

print(users[0])
users[1] = 'user6'
print(users)
print(type(users))

List包含的函数如下:

  • len(list):列表元素个数
  • max(list):返回列表元素最大值
  • min(list):返回列表元素最小值
  • list(seq):将元组转换为列表

List包含的方法如下:

  • list.append(obj):在列表的末尾增加新的对象

  • list.count(obj):统计某个元素在列表中出现的次数

  • list.extend(seq):在列表末尾一次性追加了一个序列中的多个值,用新列表来扩展原来的列表

  • list.index(obj):从列表中找出某个值第一个匹配项的索引位置

  • list.insert(index,obj):将对象插入列表

  • list.pop(index=-1):移除列表中的一个元素(默认最后一个元素),并且返回该元素的值

  • list.remove(obj):移除列表中某个值的第一个匹配项

  • list.sort(key=None, reverse=Flase):对原列表进行排序

  • list.reverse():反转列表中元素

  • list.clear():清空列表

  • list.copy():复制列表

Tuple元组

Python 的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号 (),列表使用方括号 []。元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。元组中只包含一个元素时,需要在元素后面添加逗号 , ,否则括号会被当作运算符使用。元组与字符串类似,下标索引从 0 开始,可以进行截取,组合等。

python
tup1 = ('Google', 'Runoob', 1997, 2000)
tup2 = (1, 2, 3, 4, 5 )
tup3 = "a", "b", "c", "d"   # 不需要括号也可以
print(tup1)
print(tup2)
print(tup3)

tup3 = tup1 + tup2
print(tup3)

# 元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用:
tup4 = (50)
print(type(tup4))     # 不加逗号,类型为整型
tup5 = (50,)
print(type(tup5))     # 加逗号,类型为元组
print(tup5)

访问元组

python
tup1 = ('Google', 'Runoob', 1997, 2000)
tup2 = (1, 2, 3, 4, 5, 6, 7 )
 
print ("tup1[0]: ", tup1[0]) # 输出元组第一个元素
print ("tup2[1:5]: ", tup2[1:5]) # 输出元组第二个元素到第五个元素

修改元组

元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,如下实例:

python
tup1 = ('Google', 'Runoob', 1997, 2000)
tup2 = (1, 2, 3, 4, 5, 6, 7 )
 
tup1[0] = 'Baidu' # 以下修改元组元素操作是非法的,会报错,元组不能修改
print(tup1)

tup3 = tup1 + tup2 # 创建一个新的元组
print(tup3)

删除元组

元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组,如下实例:

python
tup = ('Google', 'Runoob', 1997, 2000)
 
print (tup)
del tup
print ("删除后的元组 tup : ")
print (tup)

以上实例元组被删除后,输出变量会有异常信息,输出如下所示:

shell
删除后的元组 tup : 
Traceback (most recent call last):
  File "test.py", line 8, in <module>
    print (tup)
NameError: name 'tup' is not defined

函数

Python 定义函数使用 def 关键字,一般格式如下:

python
def 函数名(参数列表):
    函数体
# 案例如下:定义函数的时候参数列表如果有,则调用的时候必须要传递
def max(a, b):
    if a > b:
        return a
    else:
        return b
 
a = 4
b = 5
print(max(a, b))

变量的作用域

局部变量:定义在函数内部的变量,只能在函数中使用,函数使用完成则会被释放。

全局变量:到处都可以使用。

如果局部变量和全局变量同名的话,局部变量的值会覆盖全局变量的值。

python
g_number1 = 100

def change_number():
  g_number1 = 200
  print('这里是局部变量g_number1的值',g_number1)

print('这里是全局变量g_number1的值',g_number1)
change_number()
print('这里是全局变量g_number1的值',g_number1)
# 输出的结果如下:
# 这里是全局变量g_number1的值 100
# 这里是局部变量g_number1的值 200
# 这里是全局变量g_number1的值 100

如何在函数内部修改全局变量的值

python
g_number1 = 100

def change_number():
  # 加上global关键字
  global g_number1
  g_number1 = 200
  print('这里是局部变量g_number1的值',g_number1)

print('这里是全局变量g_number1的值',g_number1)
change_number()
print('这里是全局变量g_number1的值',g_number1)
# 输出的结果如下:
# 这里是全局变量g_number1的值 100
# 这里是局部变量g_number1的值 200
# 这里是全局变量g_number1的值 200

最后更新时间: