Python基础语法(二)

简介: Python基础语法

2.控制语句

有些时候我们需要控制代码进行的顺序,或者重复多段代码,此时我们就需要控制语句。

2.1 条件语句(分支语句)

if else语句来表达:如果…否则…

语法格式:

#(1)
if expression:
  do_something1
  do_something2
next_something
#(2)
if expression:
  do_something1
else:
  do_something2
# (3)
if expression1:
  do_something1
elif expression2:
 d  o_something2
else:
  do_something3

注意:Python中的条件语句写法, 和很多编程语言不太一样.

  • if 后面的条件表达式, 没有 ( ), 使用 : 作为结尾.
  • if / else 命中条件后要执行的 “语句块”, 使用 缩进 (通常是 4 个空格或者 1 个 tab)来表示, 而不是 { }
  • 对于多条件分支, 不是写作 else if, 而是 elif (合体了).

示例:不同的缩进有着不同的结果:

判断一个年是否是闰年:

#输入一个年份判断是闰年还是平年
#input是按字符串格式接受,要转化成整型
year = int(input('请输入一个年份:'))
if ((year%4==0) and (year%100 != 0)) or (year%400==0):
    print(f'{year}是闰年')
else:
    print(f'{year}不是闰年')

2.1.1 空语句

为了表达该语句什么也不做,Python引入了空语句

pass

使用示例:

a=1
if a==1:
#pass代表空语句什么也不做
    pass
print('haha')

2.2 循环语句

2.2.1 while

while 条件:
  循环体

满足条件执行循环体,否则跳出循环。

计算5的阶乘:

#计算5的阶乘
n=1
i=1
while i<=5:
    n*=i
    i+=1
print(n)

计算1!+2!+3!+4!+5!之和

#计算1!+2!+3!+4!+5!之和
sum = 0
#把各个阶乘加起来
i=1
while i<=5:
    #每次初始化n ,j
    n=1
    j=1
    #求每个阶乘
    while j<=i:
        n=n*j
        j+=1
    i+=1
    sum+=n
print(sum)

2.2.2 for循环

基本语法格式:

for 循环变量 in 可迭代对象:
    循环体
  • python 的 for 和其他语言不同, 没有 “初始化语句”, “循环条件判定语句”, “循环变量更新语句”, 而是更加简单
  • 所谓的 “可迭代对象”, 指的是 “内部包含多个元素, 能一个一个把元素取出来的特殊变量”

打印1~10

for i in range(1,11):
    print(i)

使用 range 函数, 能够生成一个可迭代对象. 生成的范围是 [1, 11), 也就是 [1, 10]

打印2,4,6,8,10

for i in range(2,11,2):
    print(i)

通过 range 的第三个参数, 可以指定迭代时候的 “步长”. 也就是一次让循环变量加几.

打印10~1

for i in range(10,0,-1):
    print(i)

range 的 步长 也可以设定成负数.

2.2.3 contibue

continue 直接跳过本次循环,进行下一次循环

示例:

for i in range (1,4):
    if i==2:
        continue
    print(i)

该代码跳过i==2,打印1,3

2.2.4 break

break直接跳出本层循环,相当于中断循环的意思

示例:

for i in range(1, 4):
    if i == 2:
        break
    print(i)

该代码只打印了1,可知在i==2时,直接中断了循环

3. 函数

函数是一段可以被重复使用的代码片段 .

使用函数可以简化代码量,使文章逻辑更清晰。

代码示例: 求数列的和, 不使用函数

# 1. 求 1 - 100 的和
sum = 0
for i in range(1, 101):
    sum += i
print(sum)
# 2. 求 300 - 400 的和
sum = 0
for i in range(300, 401):
    sum += i
print(sum)
# 3. 求 1 - 1000 的和
sum = 0
for i in range(1, 1001):
    sum += i
print(sum)

这组代码有很多重复的语句,仅仅是变量不同,我们可以把重复的代码提取出来,构成函数。

代码示例: 求数列的和, 使用函数

#求和函数
def add(beg,end):
    sum = 0
    for i in range(beg,end + 1):
        sum += i
    print(sum)
add(1,100)
add(300,400)
add(1,1000)

可以看到代码量减少许多,重复的代码已经消除

3.1 语法格式

创建函数:

def 函数名(形参列表):
    函数体
    return 返回值

调用函数/使用函数:

#函数名(实参列表)           // 不考虑返回值
#返回值 = 函数名(实参列表)   // 考虑返回值

key:函数必须先定义再使用,否则会报错

test3()         
 # 还没有执行到定义, 就先执行调用了, 此时就会报错. 
def test3():
    print('hello')

报错内容如下:

3.2 函数参数

在函数定义的时候, 可以在 ( ) 中指定 “形式参数” (简称 形参), 然后在调用的时候, 由调用者把 “实际参数” (简称 实参) 传递进去

代码示例:

#求和函数
def add(beg,end):
    sum = 0
    for i in range(beg,end + 1):
        sum += i
    print(sum)
add(1,100)
add(300,400)
add(1,1000)

上面的代码中, beg, end 就是函数的形参. 1, 100 / 300, 400 就是函数的实参.

注意:

  • 和 C++ / Java 不同, Python 是动态类型的编程语言, 函数的形参不必指定参数类型. 换句话说, 一个函数可以支持多种不同类型的参数

例如下面代码:

#一个函数参数可以接受多种类型的实参
def test(a):
    print(a)
test(10)
test('hello')
test(True)

3.3 函数返回值

函数的参数可以视为是函数的 “输入”, 则函数的返回值, 就可以视为是函数的 “输出”

如下代码:

# 定义求和函数
def add(a, b):
    return a + b
ret = add(5, 6)
print(ret)

上述代码就使用了函数的返回值

支持一次返回多个值,这是Python所特有的!!!

# 定义求和函数
def add_sub(a, b):
    return a + b, a - b
sum, sub = add_sub(5, 6)
print(sum,sub)

运行结果:

使用 _ 来忽略不想要的返回值.

# 定义求和函数
def add_sub(a, b):
    return a + b, a - b
#使用_来进行占位,表示不接收第一个返回值
_, sub = add_sub(5, 6)
print(sub)

使用_来占位,只接受一个返回值

3.4 变量作用域

在Python中:

在函数内部的变量, 也称为 “局部变量”

不在任何函数内部的变量, 也称为 “全局变量”

变量只能在所在的函数内部中生效,出了函数变量就销毁了!

如下示例:

def getPoint():
    x = 10
    y = 20
    return x, y
getPoint()
print(x, y)

这段代码,编译器提醒我们x,y未定义

在不同的作用域中,允许存在同名变量

x = 20
def test():
    x = 10
    print(f'函数内部 x = {x}')
test()
print(f'函数外部 x = {x}')

只要在不同的作用域中,变量可以同名

如果是想在函数内部, 修改全局变量的值, 需要使用 global 关键字声明:

x=10
def fun():
    #告诉函数,这个x是全局变量
    global x
    x = 20
fun()
print(x)

通过global声明,函数也能修改全局变量的值啦

注意:

if ,for ,while 语句的语句块不会影响到变量的作用域

换言之,for语句定义的变量i,在for语句外,也能使用。

示例:

for i in range(1,4):
    print(f'函数内部 i = {i}')
print(f'函数外部 i = {i}')

3.5 函数递归

递归是嵌套调用中的一种特殊情况, 即一个函数嵌套调用自己.

递归示例:

def factor(n):
    if n == 1:
        return 1
    return n * factor(n - 1)
result = factor(5)
print(result)

注意:

  • 存在递归结束条件. 比如 if n == 1 就是结束条件. 当 n 为 1 的时候, 递归就结束了.
  • 每次递归的时候,要保证函数的实参是逐渐逼近结束条件的

上述代码是经典的递归函数

3.6 参数默认值

Python 中的函数, 可以给形参指定默认值.

带有默认值的参数, 可以在调用的时候不传参.

代码示例:

def add(x, y, debug=False):
    if debug:
        print(f'调试信息: x={x}, y={y}')
    return x + y
print(add(10, 20))
print(add(10, 20, True))

此处 debug=False 即为参数默认值. 当我们不指定第三个参数的时候, 默认 debug 的取值即为 False.

带有默认值的参数需要放到没有默认值的参数的后面:

def add(x, debug=False, y):
    if debug:
        print(f'调试信息: x={x}, y={y}')
    return x + y
print(add(10, 20))

多个带有默认参数的形参,都得放在后面

3.7 关键字参数

在调用函数的时候, 需要给函数指定实参. 一般默认情况下是按照形参的顺序, 来依次传递实参的.

但是我们也可以通过关键字参数, 来调整这里的传参顺序, 显式指定当前实参传递给哪个形参。

代码示例:

def fun(x, y):
    print(f'x={x}')
    print(f'y={y}')
fun(10,20)
fun(y=10,x=20)

关键字参数也是Python特有的功能,这样可以方便的告诉程序员,这个函数要赋给谁。位置参数和关键字参数还能混着用,只不过混着用的时候,要求位置参数在前,关键字参数在后。

目录
相关文章
|
28天前
|
人工智能 Ubuntu IDE
【Python】基础:环境配置与基础语法
本文介绍了Python编程语言及其环境配置方法。Python由Guido van Rossum于1991年创建,以其简洁、易学和强大的功能著称。文章详细讲解了Python的主要特点、Windows和Ubuntu下的安装配置步骤、基础语法、控制流、函数、文件操作、模块使用及面向对象编程等内容,帮助读者快速入门Python编程。
54 4
|
3月前
|
XML 前端开发 数据格式
三分钟搞定 Python XPath 语法
XPath(XML Path Language)是一种用于在 XML 文档中查找信息的语言。它基于树状结构的 XML 文档,可以通过路径表达式来选取节点或节点集。也常常用来解析 HTML。 如果你是一个前端,对用路径获取元素可能陌生又熟悉。陌生是很多的路径,熟悉的路径上又有熟悉的属性和方法。下面我们就来探究一下 XPath 的魅力。
|
7天前
|
机器学习/深度学习 数据挖掘 开发者
Python编程入门:理解基础语法与编写第一个程序
【10月更文挑战第37天】本文旨在为初学者提供Python编程的初步了解,通过简明的语言和直观的例子,引导读者掌握Python的基础语法,并完成一个简单的程序。我们将从变量、数据类型到控制结构,逐步展开讲解,确保即使是编程新手也能轻松跟上。文章末尾附有完整代码示例,供读者参考和实践。
|
18天前
|
存储 Python Perl
python正则语法
本文介绍了正则表达式的基础知识及其在 Python 中的应用。首先解释了为什么要使用正则表达式,通过一个判断手机号的示例展示了正则表达式的简洁性。接着详细介绍了 `re` 模块的常用方法,如 `match()`、`search()`、`findall()`、`finditer()` 等,并讲解了正则表达式的基本语法,包括匹配单个字符、数字、锚字符和限定符等。最后,文章还探讨了正则表达式的高级特性,如分组、编译和贪婪与非贪婪模式。
16 2
|
24天前
|
存储 程序员 开发者
Python编程入门:从零开始掌握基础语法
【10月更文挑战第21天】本文将带你走进Python的世界,通过浅显易懂的语言和实例,让你快速了解并掌握Python的基础语法。无论你是编程新手还是想学习一门新的编程语言,这篇文章都将是你的不二之选。我们将一起探索变量、数据类型、运算符、控制结构、函数等基本概念,并通过实际代码示例加深理解。准备好了吗?让我们开始吧!
|
1月前
|
存储 C语言 索引
Python 语法及入门 (超全超详细) 专为Python零基础 一篇博客让你完全掌握Python语法
本文全面介绍了Python的基础知识,包括Python的诞生背景、为什么学习Python、Python的应用场景、Python环境的安装、Python的基础语法、数据类型、控制流、函数以及数据容器的使用方法,旨在为Python零基础读者提供一篇全面掌握Python语法的博客。
42 0
Python 语法及入门 (超全超详细) 专为Python零基础 一篇博客让你完全掌握Python语法
|
1月前
|
存储 数据可视化 数据处理
【Python篇】快速理解Python语法:全面指南
【Python篇】快速理解Python语法:全面指南
46 1
|
2月前
|
Java Linux C++
30天拿下Python之基础语法
30天拿下Python之基础语法
29 4
|
2月前
|
IDE Java 开发工具
Python的语法
Python的语法。
36 5
|
2月前
|
存储 数据挖掘 程序员
揭秘Python:掌握这些基本语法和数据类型,你将拥有编程世界的钥匙!
【9月更文挑战第3天】Python 是一种简洁强大的高级编程语言,其清晰的语法和丰富的功能深受程序员喜爱。本文从基本语法入手,介绍 Python 的代码结构特点,如通过缩进区分代码块,使逻辑更清晰。接着详细讲解主要数据类型:数值型、字符串、列表、元组、集合与字典,每个类型均附有示例代码,帮助初学者快速掌握 Python,为后续学习打下坚实基础。
46 2