【Python-语法】

Python-语法

■ 变量

在这里插入图片描述

■ 单行注释#,多行注释 “”“XXX”“”

在这里插入图片描述

■ 编码方式

在这里插入图片描述

■ 行与缩进

■ 示例一:缩进不一致,会导致运行错误

if True:
    print ("Answer")
    print ("True")
else:
    print ("Answer")
  print ("False")    # 缩进不一致,会导致运行错误
  
以上程序由于缩进不一致,执行后会出现类似以下错误:
 File "test.py", line 6
    print ("False")    # 缩进不一致,会导致运行错误
                                      ^
IndentationError: unindent does not match any outer indentation level

■ 代码组

缩进相同的一组语句构成一个代码块,我们称之代码组。

if expression :   #该行之后的一行或多行代码构成代码组。
   suite      
elif expression :  #该行之后的一行或多行代码构成代码组。
   suite 
else :           #该行之后的一行或多行代码构成代码组。
   suite

■ 多个变量赋值

a = b = c = 1   #创建一个整型对象,值为 1,从后向前赋值,三个变量被赋予相同的数值。

a, b, c = 1, 2, "runoob" #两个整型对象 12 的分配给变量 a 和 b,字符串对象 "runoob" 分配给变量 c。

■ 多行语句

Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠 \ 来实现多行语句,例如:
在 [], {}, 或 () 中的多行语句,不需要使用反斜杠 .

total = item_one + \
        item_two + \
        item_three

■ 运算符

■ 算术(数学)运算符 ( + - * / % // ** )

print("1 + 1 = ", 1 + 1)
print("2 - 1 = ", 2 - 1)
print("3 * 3 = ", 3 * 3)
print("4 / 2 = ", 4 / 2)      
print("11 // 2 = ", 11 // 2)    # 结果取整
print("9 % 2 = ", 9 % 2) 
print("2 ** 3 = ", 2 ** 3)      # 2的3次方

结算结果:
1 + 1 =  2
2 - 1 =  1
3 * 3 =  9
4 / 2 =  2.0
11 // 2 =  5
9 % 2 =  1
2 ** 2 =  4

■ 赋值运算符 =

num = 1 + 2 * 3

■ 复合赋值运算符 +=, -= , -=, %=, **=, //=,

num = 1
num += 1 # num = num + 1
print("num += 1: ", num)
num -= 1
print("num -= 1: ", num)
num *= 4
print("num *= 4: ", num)
num /= 2
print("num /= 2: ", num)
num = 3
num %= 2
print("num %= 2: ", num)

num **= 2
print("num **=2: ", num)

num = 9
num //= 2
print("num //= 2:", num)

结果:------------------------------------------------
num += 1:  2
num -= 1:  1
num *= 4:  4
num /= 2:  2.0
num %= 2:  1
num **=2:  1
num //= 2: 4

■ 比较运算符

在这里插入图片描述

■ 同一行显示多条语句

Python 可以在同一行中使用多条语句,语句之间使用分号 ; 分割,以下是一个简单的实例:

#!/usr/bin/python3
 
import sys; x = 'runoob'; sys.stdout.write(x + '\n')

■ print 输出

print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end=“”:

#!/usr/bin/python3
 
x="a"
y="b"
# 换行输出
print( x )
print( y )
 
print('---------')
# 不换行输出
print( x, end=" " )
print( y, end=" " )
print()

以上实例执行结果为:
a
b
---------
a b
name1 = "shine"
name2 = '喜欢'
print(f'name1={name1},name2={name2}')

name1=shine,name2=喜欢

■ import 与 from…import

在 python 用 import 或者 from…import 来导入相应的模块。

属性格式为
将整个模块(somemodule)导入import somemodule
从某个模块中导入某个函数from somemodule import somefunction
从某个模块中导入多个函数from somemodule import firstfunc, secondfunc, thirdfunc
将某个模块中的全部函数导入from somemodule import *

■ 示例一 导入 sys 模块

import sys
print('================Python import mode==========================')
print ('命令行参数为:')
for i in sys.argv:
    print (i)
print ('\n python 路径为',sys.path)

■ 示例二 导入 sys 模块的 argv,path 成员

from sys import argv,path  #  导入特定的成员
 
print('================python from import===================================')
print('path:',path) # 因为已经导入path成员,所以此处引用时不需要加sys.path

■ case _: 类似于 C 和 Java 中的 default:

def http_error(status):
    match status:
        case 400:
            return "Bad request"
        case 404:
            return "Not found"
        case 418:
            return "I'm a teapot"
        case _:
            return "Something's wrong with the internet"
mystatus=400
print(http_error(400))

以上是一个输出 HTTP 状态码的实例,输出结果为:
Bad request

■ 一个 case 也可以设置多个匹配条件,条件使用 | 隔开

...
    case 401|403|404:
        return "Not allowed"

■ while 循环使用 else 语句

#!/usr/bin/python3 
count = 0
while count < 5:
   print (count, " 小于 5")
   count = count + 1
else:
   print (count, " 大于或等于 5")

执行以上脚本,输出结果如下:
0  小于 5
1  小于 5
2  小于 5
3  小于 5
4  小于 5
5  大于或等于 5

■ for 语句

"""
演示for循环的基础语法
"""
name = "itheima"
for x in name:
    # 将name的内容,挨个取出赋予x临时变量
    # 就可以在循环体内对x进行处理
    print(x)
#!/usr/bin/python3 
sites = ["Baidu", "Google","Runoob","Taobao"]
for site in sites:
    print(site)

以上代码执行输出结果为:
Baidu
Google
Runoob
Taobao

■ for 统计如下字符串中,有多少个字母a

"""
演示for循环的练习题:数一数有几个a
"""
# 统计如下字符串中,有多少个字母a
name = "itheima is a brand of itcast"

# 定义一个变量,用来统计有多少个a
count = 0

# for 循环统计
# for 临时变量 in 被统计的数据:
for x in name:
    if x == "a":
        count += 1

print(f"被统计的字符串中有{count}个a")

■ for 语句配合 range(num) 生成数列

>>>for i in range(5):
...     print(i)
...
0
1
2
3
4

■ for 语句配合 range(num1,num2) 指定区间的值

>>>for i in range(5,9) :
    print(i)
     
5
6
7
8
>>>

■ for 语句配合 range(num1,num2,step) 指定数字开始并指定不同的增量

>>>for i in range(0, 10, 3) :
    print(i)     
0
3
6
9
>>>
>>>for i in range(-10, -100, -30) :
    print(i)       
-10
-40
-70
>>>

■ for 语句配合 range() 和 len() 函数以遍历一个序列的索引

>>>a = ['Google', 'Baidu', 'Runoob', 'Taobao', 'QQ']
>>> for i in range(len(a)):
...     print(i, a[i])
... 
0 Google
1 Baidu
2 Runoob
3 Taobao
4 QQ
>>>

■ 使用 range() 函数来创建一个列表

>>>list(range(5))
[0, 1, 2, 3, 4]
>>>

■ for…else

当循环执行完毕(即遍历完 iterable 中的所有元素)后,会执行 else 子句中的代码,
如果在循环过程中遇到了 break 语句,则会中断循环,此时不会执行 else 子句。

for x in range(6):
  print(x)
else:
  print("Finally finished!")
执行脚本后,输出结果为:
0
1
2
3
4
5
Finally finished!

■ pass 语句

pass是空语句,是为了保持程序结构的完整性。
pass 不做任何事情,一般用做占位语句,

实例
>>>while True:
...     pass  # 等待键盘中断 (Ctrl+C)
最小的类:

实例
>>>class MyEmptyClass:
...     pass

■ end 关键字

关键字end可以用于将结果输出到同一行,或者在输出的末尾添加不同的字符

#!/usr/bin/python3
 
# Fibonacci series: 斐波纳契数列
# 两个元素的总和确定了下一个数
a, b = 0, 1
while b < 1000:
    print(b, end=',')
    a, b = b, a+b
执行以上程序,输出结果为:

1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,

■ iter() 迭代器

迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
迭代器有两个基本的方法:iter() 和 next()。

>>> list=[1,2,3,4]
>>> it = iter(list)    # 创建迭代器对象
>>> print (next(it))   # 输出迭代器的下一个元素
1
>>> print (next(it))
2
>>>
#!/usr/bin/python3
 
list=[1,2,3,4]
it = iter(list)    # 创建迭代器对象
for x in it:
    print (x, end=" ")
执行以上程序,输出结果如下:
1 2 3 4

■ yield 生成器

yield 是一个关键字,用于定义生成器函数,生成器函数是一种特殊的函数,可以在迭代过程中逐步产生值,而不是一次性返回所有结果。

def countdown(n):
    while n > 0:
        yield n
        n -= 1
 
# 创建生成器对象
generator = countdown(5)
 
# 通过迭代生成器获取值
print(next(generator))  # 输出: 5
print(next(generator))  # 输出: 4
print(next(generator))  # 输出: 3
 
# 使用 for 循环迭代生成器
for value in generator:
    print(value)  # 输出: 2 1

■ 函数

# 定义函数
def check():
    # 编写函数体输出信息
    print("欢迎来到黑马程序员!\n请出示您的健康码以及72小时核酸证明!")

# 调用函数
check()

■ 传递参数

# 定义2数相加的函数,通过参数接收被计算的2个数字
def add(x, y, z):
    result = x + y + z
    print(f"{x} + {y} + {z}的计算结果是:{result}")

# 调用函数,传入被计算的2个数字
add(5, 6, 7)

■ return None

# 主动返回None的函数
def say_hi2():
    print("你好呀")
    return None

■ 多个返回值

# 演示使用多个变量,接收多个返回值
def test_return():
    return 1, "hello", True

x, y, z = test_return()
print(x)
print(y)
print(z)
--------------------------
1
hello
True

■ 缺省参数(默认值)实参和形参一一对应

# 缺省参数(默认值)
def user_info(name, age, gender):
    print(f"姓名是:{name}, 年龄是:{age}, 性别是:{gender}")

user_info('小天', 13, '男')

结果:
姓名是:小天, 年龄是:13, 性别是:

■ 关键字参数

def user_info(name, age, gender):
    print(f"姓名是:{name}, 年龄是:{age}, 性别是:{gender}")
    
# 关键字参数
user_info(name='小王', age=11, gender='女')
user_info(age=10, gender='女', name='潇潇')    # 可以不按照参数的定义顺序传参
user_info('甜甜', gender='女', age=9)

结果:
姓名是:小王, 年龄是:11, 性别是:女
姓名是:潇潇, 年龄是:10, 性别是:女
姓名是:甜甜, 年龄是:9, 性别是:

■ 默认参数

#!/usr/bin/python3
 
#可写函数说明
def printinfo( name, age = 35 ):
   "打印任何传入的字符串"
   print ("名字: ", name)
   print ("年龄: ", age)
   return
 
#调用printinfo函数
printinfo( age=50, name="runoob" )
print ("------------------------")
printinfo( name="runoob" )

■ * 号 元组(tuple)传参

# 不定长 - 位置不定长, *号
# 不定长定义的形式参数会作为元组存在,接收不定长数量的参数传入
def user_info(*args):
    print(f"args参数的类型是:{type(args)},内容是:{args}")

user_info(1, 2, 3, '小明', '男孩')

结果: 
args参数的类型是:<class 'tuple'>,内容是:(1, 2, 3, '小明', '男孩')
>>> def f(a,b,*,c):
...     return a+b+c
... 
>>> f(1,2,3)   # 报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: f() takes 2 positional arguments but 3 were given
>>> f(1,2,c=3) # 正常
6
>>>
#!/usr/bin/python3
  
# 可写函数说明
def printinfo( arg1, *vartuple ):
   "打印任何传入的参数"
   print ("输出: ")
   print (arg1)
   print (vartuple)
 
# 调用printinfo 函数
printinfo( 70, 60, 50 )

以上实例输出结果:
输出: 
70
(60, 50)

■ **号 的参数会以字典的形式导入

#!/usr/bin/python3
  
# 可写函数说明
def printinfo( arg1, **vardict ):
   "打印任何传入的参数"
   print ("输出: ")
   print (arg1)
   print (vardict)
 
# 调用printinfo 函数
printinfo(1, a=2,b=3)
以上实例输出结果:

输出: 
1
{'a': 2, 'b': 3}

■ 函数作为参数传递 <class ‘function’>

"""
演示函数作为参数传递
"""
# 定义一个函数,接收另一个函数作为传入参数
def test_func(compute):
    result = compute(1, 2)  # 确定compute是函数
    print(f"compute参数的类型是:{type(compute)}")
    print(f"计算结果:{result}")

# 定义一个函数,准备作为参数传入另一个函数
def compute(x, y):
    return x + y
# 调用,并传入函数
test_func(compute)

--------------------------------------------------
输出结果:
compute参数的类型是:<class 'function'>
计算结果:3

■ lambda 匿名函数

■ 不带参

f = lambda: "Hello, world!"
print(f())  # 输出: Hello, world!

■ 一个参数

x = lambda a : a + 10
print(x(5))

以上实例输出结果:
15

■ 匿名函数设置两个参数

实例匿名函数设置两个参数:
#!/usr/bin/python3
 
# 可写函数说明
sum = lambda arg1, arg2: arg1 + arg2
 
# 调用sum函数
print ("相加后的值为 : ", sum( 10, 20 ))
print ("相加后的值为 : ", sum( 20, 20 ))

相加后的值为 :  30
相加后的值为 :  40

■ 使用同样的代码来创建多个匿名函数

我们可以将匿名函数封装在一个函数内,这样可以使用同样的代码来创建多个匿名函数。
以下实例将匿名函数封装在 myfunc 函数中,通过传入不同的参数来创建不同的匿名函数:

def myfunc(n):
  return lambda a : a * n
 
mydoubler = myfunc(2)       # myfunc(2)  == lambda a : a * 2
mytripler = myfunc(3)		# myfunc(3)  == lambda a : a * 3
 
print(mydoubler(11))
print(mytripler(11))
以上实例输出结果:

22
33

■ 与map()、filter() 和 reduce() 一起使用

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

光芒Shine

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值