Python学习(11)--函数变量及返回值

简介: Python学习(11)--函数变量及返回值 (1)局部变量与全局变量 Python中根据变量作用域的不同,可以分为局部变量和全局变量。所谓局部变量就是作用域仅限于函数内部的变量,而全局变量就是那些不仅可以作用于函数代码块内部,还可以作用于整个主函数体的变量,下面来举个代码例子来了解下局部变量和全局变量。

Python学习(11)--函数变量及返回值

(1)局部变量与全局变量

Python中根据变量作用域的不同,可以分为局部变量和全局变量。所谓局部变量就是作用域仅限于函数内部的变量,而全局变量就是那些不仅可以作用于函数代码块内部,还可以作用于整个主函数体的变量,下面来举个代码例子来了解下局部变量和全局变量。代码如下:

[python] view plain copy

  1. a=10
  2. def fun():
  3.     b=9
  4.     print(a)
  5.     print(b)
  6. print(a)

以上代码定义了两个变量,分别是全局变量a以及局部变量b,a既可以在fun()函数体内使用,也可以在整个函数代码块中使用,如上既可以在fun()函数体中打印a,也可以在函数体外的主函数体内打印a;而对于变量b只可以在fun()函数体内使用,下图是全局变量a和局部变量b的作用域分布:


以下有个代码案例证明局部变量的作用域仅限于函数体内,代码如下:

在这里我们并没有使用嵌入代码的方式来展示代码,而是对代码进行截图,因为Python对于局部变量c的编译根本就没有通过,报错为变量c没有声明,这是因为局部变量c的声明位于函数体内,作用域也仅限于函数体内,作用不到函数体外的主代码块内.

(2)在函数体内声明全局变量

在Python函数体中有时候我们需要声明一个全局变量,使这个变量不仅能够在函数体内使用,还可以在主函数块中使用,这时,我们就需要使用global关键字来修饰这个变量。如下代码:

[python] view plain copy

  1. def fun():
  2.     global c
  3.     c=9
  4. print(c)

此代码块与之前的截图代码块的不同就是,fun()函数中的变量c我们使用关键字global来修饰他,使其成为为一个全局变量,以扩大变量c的作用域,为什么说变量c是一个全局变量了呢,因为其作用域已经扩大到主函数模块内,如最后一行代码print(c)并没有报语法错误,这说明c经过global修饰后是可以在主函数体内使用的全局变量.

代码运行结果如下:

会发现打印变量c的时候,报了一个变量c没有定义的错误,这是因为c没有被初始化,在java和c语言中,定义一个变量,都需要指定这个变量的类型,比如声明一个整型变量需要在其前面加上int关键字修饰,而是否对变量进行初始化并没有关系,因为在java和C语言中会对没有初始化的变量赋默认值,如整型变量会默认赋值为0.

但是在Python中则不然,在Python中变量也有类型,但是用户需要变量初始化后,Python才能解析出变量的类型,如a=10,经过初始化后Python才能知道变量a为整型变量,所以以上程序就是因为没有对global修饰的变量c初始化导致打印变量c时,Python不能解析出变量c的类型,因此就报了如上的编译错误。

解决方案有如下两种:

方案一:

[python] view plain copy

  1. def fun():
  2.     global c
  3.     c=9
  4. fun()
  5. print(c)

 

方案二:

[python] view plain copy

  1. def fun():
  2.     global c
  3.     c=9
  4. c=9
  5. print(c)

运行结果都如下:


方案一是使用调用fun()函数对全局变量c初始化,方案二是在主代码块中对全局变量c初始化.

(3)函数的返回值

   当我们调用一个函数的时候,需要的不仅仅是函数打印一个结果,可能还需要一个返回结果,以供我们做出相应的操作.在Python中返回一个函数的结果,我们使用的是return语句.

以下是一个将两个数字相加并返回结果的函数:

[python] view plain copy

  1. def add(a,b):
  2.     print('result is:')
  3.     print(a + b)
  4.     return a+b
  5. result=add(3,2)
  6. print("return is:")
  7. print(result)

从以上代码可以看出,add(a,b)为一个将参数a和b相加并返回结果的函数,return a+b 一句返回的就是a+b的结果,result是add(a,b)返回值的接收变量,代码结果如下:

在默认情况下,如果一个函数没有返回值,Python默认返回的是None。如下代码:

[python] view plain copy

  1. def add(a,b):
  2.     print('result is:')
  3.     print(a+b)
  4. result=add(3,2)
  5. print("return is:")
  6. print(result)

以上的add(a,b)函数只是将参数相加并打印,并没有返回值,这时Python会有一个默认返回值就是None,其程序运行结果如下:

可以看到当函数fun(a,b)没有返回值时,如果用变量接收函数返回值,打印结果便是None。

函数返回的类型可以是一个数值,一个字符串或者一个序列,字典等等,都可以作为函数的返回值.

需要注意的是,当在函数中执行return语句后,整个函数便执行完毕,函数中return之后的代码段不被执行,代码例子如下:

[python] view plain copy

  1. def compare(x,y):
  2.     return x>y
  3.     print(x>y)
  4. compare(4,3)

代码运行结果如下:

可以看到调用函数compare(x,y),并没有执行print(x>y),这是因为代码段位于return语句之后,当程序执行到return语句,整个函数便执行完毕,不会再执行return之后的print(x>y).

下一节我们将介绍Python函数中的冗余参数,敬请期待。

原文地址http://www.bieryun.com/2320.html

相关文章
|
1天前
|
存储 Python 容器
python之变量的使用
Python 中变量是对象的引用,赋值即为指向内存中对象。创建对象时,解释器分配内存,引用计数管理内存回收。Python 是动态类型语言,变量类型在运行时确定。对象分为可变与不可变,前者可修改内部状态,后者则不行。命名空间管理变量作用域,确保不同区域的变量独立。
|
2月前
|
Python 容器
Python学习的自我理解和想法(9)
这是我在B站跟随千锋教育学习Python的第9天,主要学习了赋值、浅拷贝和深拷贝的概念及其底层逻辑。由于开学时间紧张,内容较为简略,但希望能帮助理解这些重要概念。赋值是创建引用,浅拷贝创建新容器但元素仍引用原对象,深拷贝则创建完全独立的新对象。希望对大家有所帮助,欢迎讨论。
|
19天前
|
Python
Python调用函数并获取返回值
通过本文的介绍,我们详细了解了如何在Python中定义和调用函数,传递参数,以及获取函数的返回值。掌握这些基本操作是编写高效、清晰和可维护Python代码的基础。希望这些内容能够帮助你在实际编程中更好地使用函数。
44 18
|
29天前
|
人工智能 Unix Java
[oeasy]python059变量命名有什么规则_惯用法_蛇形命名法_name_convention_snake
本文探讨了Python中变量命名的几种常见方式,包括汉语拼音变量名、蛇形命名法(snake_case)和驼峰命名法(CamelCase)。回顾上次内容,我们主要讨论了使用下划线替代空格以提高代码可读性。实际编程中,当变量名由多个单词组成时,合理的命名惯例变得尤为重要。
67 9
|
2月前
|
Python
Python学习的自我理解和想法(10)
这是我在千锋教育B站课程学习Python的第10天笔记,主要学习了函数的相关知识。内容包括函数的定义、组成、命名、参数分类(必须参数、关键字参数、默认参数、不定长参数)及调用注意事项。由于开学时间有限,记录较为简略,望谅解。通过学习,我理解了函数可以封装常用功能,简化代码并便于维护。若有不当之处,欢迎指正。
|
1月前
|
数据可视化 数据挖掘 大数据
1.1 学习Python操作Excel的必要性
学习Python操作Excel在当今数据驱动的商业环境中至关重要。Python能处理大规模数据集,突破Excel行数限制;提供丰富的库实现复杂数据分析和自动化任务,显著提高效率。掌握这项技能不仅能提升个人能力,还能为企业带来价值,减少人为错误,提高决策效率。推荐从基础语法、Excel操作库开始学习,逐步进阶到数据可视化和自动化报表系统。通过实际项目巩固知识,关注新技术,为职业发展奠定坚实基础。
|
1月前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
30 3
|
1月前
|
JSON 监控 安全
深入理解 Python 的 eval() 函数与空全局字典 {}
`eval()` 函数在 Python 中能将字符串解析为代码并执行,但伴随安全风险,尤其在处理不受信任的输入时。传递空全局字典 {} 可限制其访问内置对象,但仍存隐患。建议通过限制函数和变量、使用沙箱环境、避免复杂表达式、验证输入等提高安全性。更推荐使用 `ast.literal_eval()`、自定义解析器或 JSON 解析等替代方案,以确保代码安全性和可靠性。
40 2
|
2月前
|
数据采集 JSON API
如何利用Python爬虫淘宝商品详情高级版(item_get_pro)API接口及返回值解析说明
本文介绍了如何利用Python爬虫技术调用淘宝商品详情高级版API接口(item_get_pro),获取商品的详细信息,包括标题、价格、销量等。文章涵盖了环境准备、API权限申请、请求构建和返回值解析等内容,强调了数据获取的合规性和安全性。
|
25天前
|
存储 人工智能 Python
[oeasy]python061_如何接收输入_input函数_字符串_str_容器_ 输入输出
本文介绍了Python中如何使用`input()`函数接收用户输入。`input()`函数可以从标准输入流获取字符串,并将其赋值给变量。通过键盘输入的值可以实时赋予变量,实现动态输入。为了更好地理解其用法,文中通过实例演示了如何接收用户输入并存储在变量中,还介绍了`input()`函数的参数`prompt`,用于提供输入提示信息。最后总结了`input()`函数的核心功能及其应用场景。更多内容可参考蓝桥、GitHub和Gitee上的相关教程。
14 0