博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
我的Python入门笔记(14)
阅读量:5221 次
发布时间:2019-06-14

本文共 3861 字,大约阅读时间需要 12 分钟。

十一章、函数(下)


If the implementation is hard to explain, it's a bad idea.——The Zen of Python


一、返回值

  在Python中,可以在函数体内使用return语句,为函数指定返回值。该返回值可以是任意类型,并且无论return语句出现在函数的什么位置,只要得到执行,就会直接结束该函数的执行,其语法格式如下:

  result = return [value]

  result: 用于保存返回结果,如果只返回一个值,那么result中保存的就是返回的一个值,该值可以是任意类型。如果返回多个值,那么result中保存的是一个元组。

  value :可选参数,用于指定要返回的值,可以返回一个值,也可以返回多个值.

  当函数中没有return语句时,或者省略了return语句的参数时,将返回None,即返回空值.

1 def funname(name): 2     nickname='' 3     if name =='雨霓':   #如果输入的是雨霓 4         nickname=1210 5     elif name =='淑雪': 6         nickname=1184 7     elif name == '霜序': 8         nickname=220 9     else:10         nickname='无法找到对应信息'11     return nickname  #返回对应名字喜欢的数字12 while True:13     name=input('请输入姓名:')  #接收用户输入14     nickname=funname(name)  #调用函数15 print('姓名:',name,'喜欢的数字:',nickname)16 输出:17 请输入姓名:雨霓18 姓名: 雨霓 喜欢的数字: 1210

二、变量的作用域

  变量的作用域是指程序代码能够访问该变量的区域,如果超出该区域,再访问时就会出现错误,一般会根据变量的“有效范围”,将变量分为“局部变量”和“全局变量

  1.局部变量

  局部变量是指函数内部定义并使用的变量,它只在函数的内容有效。即函数内部的名字只在函数运行时,才会创建,在函数运行之前或者运行完毕,所有的名字就都不存在了,所以,如果在函数外部使用函数内部定义的变量,就会抛出NameError异常.例如:定义一个名字为f_demo的函数,在该函数内部定义一个变量message(称为局部变量)并为其赋值,然后输出该变量,最后在函数体外部再次输出message变量,则会报错:

1 def f_demo():2     message="如果我是284,我的220在哪里?"3     print('局部变量message:',message)4 f_demo()5 print('局部变量message:',message)6 输出:7   File "C:/Users/Mortal/PycharmProjects/Python_Note/venv/test1.py", line 5, in 
8 print('局部变量message:',message)9 NameError: name 'message' is not defined

  2.全局变量:

  与局部变量对应,全局变量是能够作用于函数内外的变量。全局变量主要有以下两种情况:

  (1)   如果一个变量,在函数外定义,那么不仅可以在函数外访问到,在函数内也可以访问到。在函数体以外的定义的变量是全局变量.示例如下:

1 message="如果我是284,我的220在哪里?"  #全局变量2 def f_demo():3     print('局部变量message:',message)  #在函数体内输出全局变量的值4 f_demo()                              #调用函数5 print('局部变量message:',message)     #在函数体外输出全局变量的值6 输出:7 局部变量message: 如果我是284,我的220在哪里?8 局部变量message: 如果我是284,我的220在哪里?

  当局部变量与全局变量重名时,对函数体的变量进行赋值后,不影响函数体外的变量。

 (2)在函数体内定义,并且使用global关键字修饰后,该变量也可以为全局变量。在函数体外也可以访问到该变量,并且在函数体内还可以进行修改.

1 message="如果我是284,我的220在哪里?"  #全局变量 2 print('函数体外:message=',message)     #在函数体外输出全局变量 3 def f_demo(): 4     message='别人都关心你飞的高不高,我只关心你的翅膀好吃不好吃!'  #局部变量 5     print('局部变量message:',message)  #在函数体内输出局部变量的值 6 f_demo()                              #调用函数 7 print('函数体外message:',message)     #在函数体外输出全局变量的值 8  9 输出:10 函数体外:message= 如果我是284,我的220在哪里?11 局部变量message: 别人都关心你飞的高不高,我只关心你的翅膀好吃不好吃!12 函数体外message: 如果我是284,我的220在哪里?

  在函数内部定义的变量即使与全局变量重名,也不影响全局变量的值。如果想要在函数体内部修改全局变量的值,需要再定义局部变量时,使用global关键字修饰。

1 message="如果我是284,我的220在哪里?"  #全局变量 2 print('函数体外:message=',message)     #在函数体外输出全局变量 3 def f_demo(): 4     global message            #将message声明为全局变量 5     message='别人都关心你飞的高不高,我只关心你的翅膀好吃不好吃!'  #局部变量 6     print('局部变量message:',message)  #在函数体内输出局部变量的值 7 f_demo()                              #调用函数 8 print('函数体外:message = :',message)     #在函数体外输出全局变量的值 9 输出:10 11 函数体外:message= 如果我是284,我的220在哪里?12 局部变量message: 别人都关心你飞的高不高,我只关心你的翅膀好吃不好吃!13 函数体外:message = : 别人都关心你飞的高不高,我只关心你的翅膀好吃不好吃!

  注意:尽管Python允许全局变量和局部变量重名,但是在实际开发时,不建议这么做,因为这样容易让代码混乱,很难分清那些是全局变量,那些是局部变量。

三、匿名函数

  匿名函数是指没有名字的函数,它主要应用在需要一个函数,但是又不想费神去命名这个函数的场合,通常情况下,这种函数只能使用一次,在Python中,使用lambda表达式创建匿名函数,其语法格式如下:

  result = lambda[arg1[,arg2,…,arg n]]:expression

  result 用于调用lambda表达式

  [arg1[,arg2,…,arg n]]: 可选参数,用于指定要传递的参数列表,多个参数使用逗号分隔

       expression :必选参数,用于指定一个实现具体功能的表达式。如果有参数,那么在该表达式中将应用这些参数.

  使用lambda表达式时,参数可以有多个,用逗号分隔,但是表达式只有一个,即只能返回一个值,而且也不能出现其他非表达式语句(for 或 while).

1 import math2 def circlearrea(r):3     result = math.pi*r*r4     return result5 r=106 print('半径为',r,'的圆面积为:',circlearrea(r))7 输出:8 半径为 10 的圆面积为: 314.1592653589793

  使用lambda表达式:

1 import math2 r=103 result=lambda r:math.pi*r*r4 print('半径为',r,'的圆面积为:',result(r))5 输出:6 半径为 10 的圆面积为: 314.1592653589793

  虽然使用lambda表达式比使用自定义函数的代码少一些。但是在使用lambda表达式时,需要定义一个变量,用于调用该lambda表达式。

  Lambda表达式的首要用途是指定短小的回调函数.

  emmm关于Python的内置函数就不做过多介绍,后面还会遇到的!

转载于:https://www.cnblogs.com/1210x1184/p/11129589.html

你可能感兴趣的文章
caffe的在ubuntu下面的安装
查看>>
Python 3语法小记(九) 异常 Exception
查看>>
使用shared memory 计算矩阵乘法 (其实并没有加速多少)
查看>>
MySQL常用的函数
查看>>
Django 相关
查看>>
ArcGIS自定义工具箱-字段合并
查看>>
git init
查看>>
Vue(day8)
查看>>
sshpass ssh登录时自动输入密码
查看>>
训练记录
查看>>
【转】ubuntu16.04设置python3为默认及一些库的安装
查看>>
算数几何均值不等式,柯西不等式,琴生Jensen不等式
查看>>
mysql group by的用法 注意
查看>>
IList和DataSet性能差别 转自 http://blog.csdn.net/ilovemsdn/article/details/2954335
查看>>
Python中的join()函数的用法
查看>>
Hive教程(1)
查看>>
黑马程序员-指针的初步认识
查看>>
提示未授予用户在此计算机上的请求登录类型
查看>>
Java集合框架学习
查看>>
第16周总结
查看>>