解析python调用函数加括号和不加括号的区别

下面看下python调用函数加括号和不加括号的区别,具体代码如下所示;

 def  bracket(data):

      return data

  if __name__ == '__main__':

      # 不带括号调用的结果:<function bracket at 0x0000000004DD0B38>,a是整个函数体,是一个函数对象,不须等该函数执行完成

     a = bracket

     print a

     # 带括号调用的结果:6 ,b是函数执行后返回的值6,须等该函数执行完成的结果

     b = bracket(6)

    print b

1、不带括号时,调用的是这个函数本身 ,是整个函数体,是一个函数对象,不须等该函数执行完成。

2、带括号(参数或者无参),调用的是函数的执行结果,须等该函数执行完成的结果。

简单说就是:

如果使用括号,则只调用if和函数。hello()调用函数;hello只是一个绑定到函数的名称,可以用来将函数对象作为参数传递给另一个函数。

def caller(f):
    f()

def hello():
    print("hi")

def goodbye():
    print("bye")

caller(hello)  # Prints "hi"
caller(goodbye)  # Prints "bye"

id返回不同的值,因为对id的每次调用都接收一个完全独立的对象作为其参数。使用id(hello)id获取函数对象本身。使用id(hello())id将获得通过调用hello返回的对象;

到此这篇关于python调用函数加括号和不加括号的区别的文章就介绍到这了,更多相关python调用函数加括号和不加括号的区别内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python代数式括号有效性检验示例代码

    思路: 利用栈实现代数式中括号有效行的的检验: 代码: class mychain(object): #利用链表建立栈,链表为父类 length=0 def __init__(self,value=None,next=None):#创建链表,长度并不包含头部 self.value=value self.next=next #mychain.length=mychain.length+1 def append(self,value=None): while self.next!=None: sel

  • Python基础 括号()[]{}的详解

    目录 1.python中的小括号() 2.python中的中括号[] 3.python大括号{}花括号 前言: Python主要有三种数据类型:字典.列表.元组.其分别由花括号,中括号,小括号表示. 如: 字典:dic={'a':12,'b':34} 列表:list=[1,2,3,4] 元组:tup=(1,2,3,4) python语言最常见的括号有三种,分别是∶小括号().中括号[]和大括号也叫做花括号{ }.其作用也各不相同,分别用来代表不同的python基本内置数据类型. 1.python

  • 基于python判断字符串括号是否闭合{}[]()

    前言 经典面试题: 判断一个字符串里面的括号是否闭合,如:{{()}} 就是一个闭合的字符串. {{()}]} 这个里面 ([)] 括号不对称,这种就是不闭合. python判断闭合 解决基本思路: 先把左括号添加到一个列表里面,遇到右括号就弹出列表里面的最后一个存放进去的. 对比右括号和弹出的左括号是否对称,如果是就继续依次对比. 最后判断列表里面是否有多余的左括号,如果列表为空,说明全部被弹出,那就是闭合的 最后考虑下左括号和右括号有多余的情况 代码如下 def is_str_close(a

  • Python如何省略括号方法详解

    在Python语言中最常见的括号有三种,分别是:小括号().中括号[].花括号{}:其作用也不相同,分别用来代表不同的Python基本内置数据类型. 1.Python中的小括号(): 代表tuple元祖数据类型,元祖是一种不可变序列.创建方法很简单,大多数时候都是小括号括起来的. 2.Python中的中括号[]: 代表list列表数据类型,列表是一种可变序列.创建方法既简单又特别. 3.Python中的花括号{}: 代表dict字典数据类型,字典是Python中唯一内建的映射类型.字典中的值没有

  • 简单了解为什么python函数后有多个括号

    这篇文章主要介绍了简单了解为什么python函数后有多个括号,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一般而言,函数后面只有一个括号.如果看见括号后还有一个括号,说明第一个函数返回了一个函数,如果后面还有括号,说明前面那个也返回了一个函数.以此类推. 比如fun()() def fun(): print("this is fun"); def _fun(): print("this is _fun"); re

  • Python实现括号匹配方法详解

    这篇文章主要介绍了python实现括号匹配方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.用一个栈[python中可以用List]就可以解决,时间和空间复杂度都是O(n) # -*- coding: utf8 -*- # 符号表 SYMBOLS = {'}': '{', ']': '[', ')': '(', '>': '<'} SYMBOLS_L, SYMBOLS_R = SYMBOLS.values(), SYMBOLS.ke

  • Python3中小括号()、中括号[]、花括号{}的区别详解

    介绍 在Python语言中最常见的括号有三种,分别是:小括号().中括号[].花括号{}:其作用也不相同,分别用来代表不同的Python基本内置数据类型. 小括号() Python中的小括号(): 代表tuple元祖数据类型,元祖是一种不可变序列. 示例 >>> a = (12,23) >>> a (12, 23) >>> () #空元祖 () >>> 1, #一个值的元祖 (1,) 中括号[] Python中的中括号[]:  代表l

  • 解析python调用函数加括号和不加括号的区别

    下面看下python调用函数加括号和不加括号的区别,具体代码如下所示: def bracket(data): return data if __name__ == '__main__': # 不带括号调用的结果:<function bracket at 0x0000000004DD0B38>,a是整个函数体,是一个函数对象,不须等该函数执行完成 a = bracket print a # 带括号调用的结果:6 ,b是函数执行后返回的值6,须等该函数执行完成的结果 b = bracket(6)

  • 详谈构造函数加括号与不加括号的区别

    如下所示: //首先定义一个构造函数Hello function Hello(){ alert(1): } //定义一个函数表达式 var getName = function(){ alert(2): } //实例化对象,下面这两个如果构造函数没有形参的话,实例化的时候构造函数可以不加括号(推荐加上): var p = new Hello: var p1 = new Hello(): //但是用下边的方式调用getName函数的时候,构造函数有没有括号可就不一样了: new Hello.get

  • vue 函数调用加括号与不加括号的区别

    写在前面:最近做的一个项目用是很久之前的,在维护项目中就无法使用vue等技术来操作,所以一些方法用的是原生来写的,在绑定点击方法时,方法名没加括号,就没生效,加了括号就生效了,当时有疑惑的点是在之前做vue的项目中,我记得不加括号也是完全可以的,于是就详细的查了一下. 原生方法调用函数 在script里写方法,不加括号的话就相当于得到的是这个函数体,是这个函数本身,并不会执行函数 <body> <div>函数调用是否要加括号</div> <button>点击

  • 通过实例解析Python调用json模块

    这篇文章主要介绍了通过实例解析Python调用json模块,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 介绍 今天介绍一种数据格式,json.Json是JavaScript Object Notation的缩写,区别于txt.csv,json编码格式更加灵活,在工作也会经常遇到.在Python中要读写json是十分方便的,只需要调用json模块. 使用 直接导入模块 import json 两个读写数据的函数: json.dumps() 和

  • python调用函数、类和文件操作简单实例总结

    本文实例总结了python调用函数.类和文件操作.分享给大家供大家参考,具体如下: 调用函数有三种方式 一,导入整个模块(所有函数) 导入 import module_name 调用 module_name.function_name() 在这种情况中,不会出现下面两种方式的缺点,即具有相同函数名的问题,因为一个文件中不存在两个相同的文件名.但缺点是能不清晰显示出使用到的函数,调用的时候也需要重复写模块名. 二,导入模块中单个或多个函数 导入 from module_name import fu

  • 深入解析Python中函数的参数与作用域

    传递参数 函数传递参数时的一些简要的关键点: 参数的传递是通过自动将对象赋值给本地变量名来实现的.所有的参数实际上都是通过指针进行传递的,作为参数被传递的对象从来不自动拷贝. 在函数内部的参数名的赋值不会影响调用者. 改变函数的可变对象参数的值会对调用者有影响. 实际上,Python的参数传递模型和C语言的相当相似: 不可变参数"通过值"进行传递.像整数和字符串这样的对象是通过对象引用而不是拷贝进行的,但是因为不论怎么样都不可能在原处改变不可变对象,实际的效果就很像创建了一份拷贝. 可

  • 深入解析python返回函数和匿名函数

    目录 一.返回函数 1.闭包 2.nonlocal 二.匿名函数——lambda 此文章继续上篇高阶函数,地址:python函数式编程以及高阶函数 一.返回函数 高阶函数的特性,除了可以接受函数作为参数之外,高阶函数还可以返回函数下面来看几个案例: 1.定义一个求和的函数,可以这样写 # -*- coding: utf-8 -*- def test_1(*args): i = 0 for n in args: i = i + n return i print(test_1(10,20,30))

  • C语言中if语句加大括号和不加大括号的区别介绍

    首先来回顾以下if语句 if(表达式1){     语句1     语句2     --   } 如果表示条件的逻辑表达式的结果不是0,那么就执行后面跟着的这对大括号内的语句: 否则就跳过不执行 继续下面的其他语句. 但是if语句还有一种形式可以不用{}. 举个栗子: if(a > b) a += b + 10; if语句这一行结束的时候并没有表示语句结束的";",而后面的赋值语句写在if的下一行,而且缩进了,在这一行结束的时候有一个分号. 表明这条赋值语句是if语句的一部分,i

  • Lua中调用函数使用点号和冒号的区别

    本文是面向对象预热篇,讲解函数两种调用方式的区别,初学者比较容易被坑. 1.初学者最易混乱Top1--调用函数时用点号还是用冒号? 我们来看看下面的两句代码: 复制代码 代码如下: mSprite.setPosition(100, 20); mSprite:setPosition(100, 20); 对于初次接触Lua的朋友来说,这简直就是噩梦,为嘛函数的调用有两种形式,是让我们随便挑的意思吗?   这两种形式是有区别的,区别很大,但只有一个. 不过,暂时不解释,后面再介绍. 2.最简单的类 我

  • Python中装饰器兼容加括号和不加括号的写法详解

    使用Django的时候,我发现一个很神奇的装饰器: @login_required, 这是控制一个view的权限的,比如一个视图必须登录才可以访问,可以这样用: @login_required def my_view(request): ... return render(...) 同时,如果要达到这样一种效果:如果用户没有登录,那么就把用户重定向到登录界面,可以这样用: @login_required(login_url='/accounts/login/') def my_view(requ

随机推荐