python定义变量名的时候、需要注意问题_python中将函数赋值给变量时需要注意的一些问题...

前言

本文主要给大家介绍的是关于python将函数赋值给变量时需要注意的一些问题,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍:

见过两种函数赋值给变量的形式,一种是

a=f

另一种是

a=f()

这两种形式是有区别的,分别总结一下。

1.a=f型属于将变量指向函数。

用代码验证一下:

>>> f = abs

>>> f(-10)

10

说明变量f现在已经指向了abs函数本身。直接调用abs()函数和调用变量f()完全相同。这是廖雪峰老师python教程上的例子,现在调用f()和调用abs()是一样的了。

再举一个工厂函数的例子:

def maker(N):

def action(X):

return X**N

return action

这个嵌套函数的外层返回值为内层函数的函数名,注意没有括号,这里有无括号是有很大区别的。此时调用外部函数:

f=maker(2)

那么如上所述,f便指向了action函数,且限制条件为N=2,可以理解为f为N等于2时的action函数。我们来调用它:

>>> f(3)

9

证明f和action函数是一样的。

2.a=f()型属于将f()的返回值赋值给a的过程

这里的a仅仅接收f()的返回值,如果f()没有返回值,那么a即被赋值为None。这里值得注意的一点是,在a=f()的执行过程中,f()会运行一次,这也是我刚刚搞明白的,如:

>>> def add(x,y):

z=x+y

print(z)

>>>a=add(3,4)

7

这里虽然只有一个赋值语句执行了,但是却输出了结果7,说明赋值过程函数add执行了,然而a的值为None,且只能通过print语句才可以显示。不只是赋值过程函数会执行,写在return语句中也会如此。

>>>def log(func):

def wrapper(*args, **kw):

print('call %s():' % func.__name__)

return func(*args, **kw)

return wrapper

>>>@log

>>>def now():

print('2015-3-25')

这是廖雪峰老师python教程装饰器一节的例程,刚开始我以为return func(*args,**kw)这个语句是返回了now()函数(即func函数)的返回值,后来发现now函数没有返回值,即为None,所以其实是这个语句在赋值过程,

func(*args,**kw)执行了,即函数now的print语句执行了。

下面的习题中,一个变形是要求在函数调用的前后打印出'begin call'和'end call',下面一位网友的程序是这么写的:

def wrapper(*args,**kw):

print(t+'begin call')

result=func(*args,**kw)

print(t+'end call')

return result

开始不太理解为什么使用result=func(*args,**kw)这句,后来理解后才明白其实赋值本身并没有意义,只是这句话同时使得func函数运行了,所以写成

def wrapper(*args,**kw):

print(t+'begin call')

func(*args,**kw)

print(t+'end call')

结果也是一样的。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/543188.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vmware nat模式网络不通_【EVENG入门】 03EVENG网络运行环境(桥接模式、NAT模式、Cloud连接虚拟设备)...

EEmulated,模拟VVirtual,虚拟EEnvironment,环境NNext,下一个GGeneration,一代也就是EVE-NG下一代模拟器虚拟环境当然,EVE也是黄昏,NG就是女鬼了EVE-NG黄昏的女鬼演示视频在此操作文档在此以下是…

金融行业 | 电子银行系统性能优化解决方案

随着互联网金融的蓬勃发展,以及来自支付宝等新兴网络金融机构的强大冲击,传统银行业纷纷加大对手机银行和网络银行等电子银行业务的投入力度,用户也从网银时代的足不出户转账付款发展到今天随时随地通过手机获取各种金融服务,前端…

python安装gz文件_python tar.gz怎么安装-问答-阿里云开发者社区-阿里云

Windows环境: 安装whl包:pip install wheel -> pip install **.whl 下载whl文件 MySQL_python-1.2.5-cp27-none-win32.whl MySQL_python-1.2.5-cp27-none-win_amd64.whl 执行pip install MySQL_python-1.2.5-cp27-none-win32.whl 如果是安装64位的&am…

Erlang/Elixir 社区摘要: 2016-05-21

Elixir 雷达, 49期 https://app.rdstation.com.br/mail/336031fa-3fe3-4d59-b05b-a86f8affa7c9如何使用环境变量来配置Exrm发布的应用 http://blog.plataformatec.com.br/2016/05/how-to-config-environment-variables-with-elixir-and-exrm/Merkle Trees in Elixir Merkle Tre…

git master主分支_Git分支管理策略及简单操作

前几天整理了一下之前项目的开发代码,当时使用了Git来进行代码版本管理。虽然本人熟悉常用的Git操作,但是对分支的管理经验非常欠缺。拿这个项目来说,在项目中有不下20个分支,每个分支间的继承关系相当之混乱,非常不利…

PAT (Advanced Level) 1038. Recover the Smallest Number (30)

注意前导零的消去。 #include <iostream> #include <string> #include <sstream> #include <algorithm> using namespace std;string s[1000010]; int n;bool cmp(const string &a, const string &b) {return ab<ba; }int main() {cin>&…

java在什么环境变量_Java-环境变量

很多同学不太明白环境变量的到底是什么具体有什么用? 这里阿风为不太明白的同学介绍一下.首先我们打开环境变量的位置.,这里以win10系统作为介绍在桌面邮件属性,如下然后点击高级系统变量接着点击环境变量然后你就能看到环境变量的具体设置界面了如图所示,环境变量分为用户变量…

git rebase用法_Git入门实战

如果给所有软件列出一个排行榜的话&#xff0c;那么Git定会名列前茅。Git对于代码项目的管理是具有划时代意义的&#xff0c;向Linus致敬&#xff0c;不但写出了可以与Windows争锋的Linux系统&#xff0c;还设计实现了如此强大的版本管理工具。当我了解Git后&#xff0c;真后悔…

linux md5 加密字符串和文件方法

linux md5 加密字符串和文件方法 MD5算法常常被用来验证网络文件传输的完整性&#xff0c;防止文件被人篡改。MD5全称是报文摘要算法&#xff08;Message-Digest Algorithm 5&#xff09;&#xff0c;此算法对任意长度的信息逐位进行计算&#xff0c;产生一个二进制长度为128位…

【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(5.5) 登录功能的实现,完善登录功能...

索引 【无私分享&#xff1a;从入门到精通ASP.NET MVC】从0开始&#xff0c;一起搭框架、做项目 目录索引 简述 今天我们来完善我们的登录功能 项目准备 我们用的工具是&#xff1a;VS 2013 SqlServer 2012 IIS7.5 希望大家对ASP.NET MVC有一个初步的理解&#xff0c;理论性的…

jsonobject转list集合_怎样优雅的操作集合,CollectionUtils工具类正确使用姿势

点击上方"码之初"关注&#xff0c;选择"设为星标"与精品技术文章不期而遇来源&#xff1a;cnblogs.com/qdhxhz/p/10787130.html这篇讲的CollectionUtils工具类是在apache下的, 而不是springframework下的CollectionUtils。个人觉得CollectionUtils在真实项…

docx命令运行Java_使用Java将DOC文件转换为DOCX

7 个答案:答案 0 :(得分&#xff1a;3)// Open a document.Document doc new Document("input.doc");// Save document.doc.save("output.docx");请查看这在您的方案中是否有帮助。披露&#xff1a;我在Aspose担任开发人员传播者。答案 1 :(得分&#xff…

[c#基础]使用抽象工厂实现三层

引言 昨天加了一天班&#xff0c;今天闲来无事&#xff0c;就在想如何将之前的三层和最近一直在学的设计模式给联系在一起&#xff0c;然后就动手弄了个下面的小demo。 项目结构 项目各个层实现 Wolfy.Model层中有一个抽象类BaseModel.cs&#xff0c;User.cs是用户实体类&#…

php 当前ip_php获取本机ip(远程IP地址)

例子&#xff0c;php获取用户IP地址。复制代码 代码示例:// 111111111111echo $_SERVER[REMOTE_ADDR];// 2222222222222function get_local_ip() {$preg "/\A((([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\.){3}(([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25…

场效应管原理_场效应管——不就是一个电控开关?

管在mpn中&#xff0c;它的长相和我们常面讲的三极管非常像&#xff0c;所以有不少修朋友好长时间还分不清楚&#xff0c;统一的把这些长相相同的三极管、场效应管、双二极管、还有各种稳压IC统统称作“三个脚的管管”&#xff0c;呵呵&#xff0c;如果这样麻木不分的话&#x…

解决phpMyAdmin在nginx+php-fpm模式下无法使用的问题

原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://dgd2010.blog.51cto.com/1539422/1684839 昨天接到一个网友的问题&#xff0c;说yum安装nginxphp-fpmmysqlphpMyAdmin后&#xff0c;发现…

python库有什么用_Python程序员必知什么 常用的Python库有哪些

Python程序员必知什么&#xff1f;常用的Python库有哪些&#xff1f;Python有很多丰富而强大的库&#xff0c;这是它成为人工智能与数据分析领域强者的关键。有很多Python开发人员想知道常用的Python库有哪些&#xff0c;接下来就给大家详细介绍一下。ArrowPython中处理时间的库…

三次握手面试题java_java面试题三次握手和四次挥手-嗨客网

题目对 tcp 了解吗&#xff1f;讲讲它的三次握手和四次挥手&#xff1f;为什么需要三次握手&#xff0c;为什么需要四次挥手。答案三次握手第一次握手&#xff1a;客户端向服务器发送连接请求&#xff0c;这个时候报文首部中的同步为 SYN 1&#xff0c;同时生成一个随机序列号…

运维经验分享(三)-- 解决Ubuntu下crontab不能正确执行脚本的问题

原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://dgd2010.blog.51cto.com/1539422/1676490 运维经验分享作为一个专题&#xff0c;目前共7篇文章 《运维经验分享&#xff08;一&#xff0…

一个jsp能取到父类jsp的值吗_「Javaweb」ssm整合权限控制框架shiro,你知道怎么做吗?...

为美好而努力——羊羽科技说。最近在开发自己的网站&#xff0c;需要权限控制功能&#xff0c;在网上找了一下&#xff0c;找到了我接下来要介绍的shiro框架。shiro框架是Apache公司维护的开源产品之一&#xff0c;其官网对其的简介是这样的&#xff1a;shiro官网简介翻译过来就…