Python学习笔记—day4—基础知识

一、函数基础

(1)定义

函数相当于编程过程中剪切粘贴的操作,可以降低代码冗余,将复杂的系统分解为可管理的部分。

(2)函数的作用

最大化代码重用和最小化代码冗余;实现流程的分解。

(3)函数语句

在这里插入图片描述在这里插入图片描述

3.1 def语句

def是一个可执行语句,即在python运行到def语句之前函数并不存在。因此def语句的作用是创建一个函数对象并将其赋值给一个变量名,常用的def语句为:

def <name><arg1,arg2,....>
     <statement>
     reture <value>

3.2 lambda

创建一个对象并将其作为结果返回。

3.3 reture

从函数被调用开始到函数完成它额工作,函数通过return语句将函数调用结果传递给调用者。

3.4 yield

yield语句可以挂起函数的状态以便在稍后恢复原来的状态,可以给调用者发回一个结果对象并让它记住离开的地方。

3.5 global

在默认情况下在函数中被赋值的对象是这个函数的本地变量,且仅在函数运行的过程中存在。global则是声明了一个模块级的变量并赋值。

3.6 nonlocal

nonlocal语句允许函数来赋值一条语法封闭的def语句的作用域中已有的名称,即声明了将要赋值的一个封闭的函数变量。

二、函数的参数与作用域

(1)函数的作用域

在任何情况下,变量的作用域总是由代码中被赋值的地方所决定与函数的调用完全没有关系,因此又被称为语义作用域。通常情况下变量可以在三个不同的地方分配,分别对应三种不同的作用域:1.如果一个变量在def内赋值它的作用域在这个函数内;2.如果一个变量在一个嵌套的def中被赋值,对于嵌套的函数来说是非本地的;3.如果在def之外赋值,它的作用域是文件全局的。

(2)本地作用域与全局作用域

函数定义的是本地作用域,而模块定义的是全局作用域。两个作用域之间的关系:内嵌模块是全局作用域;全局作用域的范围仅限于单个文件;每次对函数的调用都相当于创建了一个本地作用域;赋值的变量名除非声明为全局变量或者非本地变量,否则均为本地变量;所有其他的变量名都可以归纳为本地(在def内部),全局变量(模块命名空间内部),内置变量(由python预定义的内置模块提供)。

(3)LEGB原则(变量名解析机制)

LEGB:其中L:本地作用域;E:上一层结构中的lambda或def的本地作用域;G:全局作用域;B:内置作用域。
在这里插入图片描述

(4)函数中的参数

4.1 传递参数

参数是通过赋值来传递的。参数的传递是通过自动将对象赋值给本地变量名来实现的;函数内部参数名的赋值不会影响调用;改变函数可变对象参数的值会对调用有影响。

4.2 参数类型

关键字参数:在调用函数时允许通过变量名匹配而不是通过位置;
位置参数:通过位置进行参数值的传递;
默认参数:如果没有传入值,在函数运行前参数就被赋了默认值。

4.3 函数参数匹配表

在这里插入图片描述
在这里插入图片描述

三、函数返回值

在python中的函数都有返回值,默认为None。也可以使用return value语句来定义一个且只能定义一个或多个任意类型的返回值。
函数中print()和return()的区别:
return()返回值并结束函数,print()仅仅是打印输出,函数没有返回值,为none。
示例:

def sum1(x,y):
    print(x+y)
def sum2(x,y):
    return x+y
x=int(input('请输入一个值:'))
y=int(input("请再输入一个值:"))
result1=sum1(x,y)
result2=sum2(x,y)
print(result1)
print(result2)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值