精华内容
下载资源
问答
  • Python学习第八天 ...#1、带默认值的参数必须放在位置参数后面 #2、默认参数可以多个 #3、默认值是,可以不传参数。不传时,取默认值,传值时,取传入的参数 #4、按顺序赋值,也可以通过关键字指定 ...

    Python学习第八天
    函数-函数的默认参数

    #函数的默认参数
    def msg(name=‘张大爷’,content=‘你个鳖孙儿,最近在干撒呢’):
    print(name+content)

    msg(‘张三’,‘最近好吗?’)
    msg()

    #默认参数
    #1、带有默认值的参数,必须放在位置参数后面
    #2、默认参数可以有多个
    #3、有默认值是,可以不传参数。不传时,取默认值,传值时,取传入的参数
    #4、按顺序赋值,也可以通过关键字指定

    展开全文
  • 何必这么麻烦呢,当我进一步理解之后,原来修饰器的作用就是完成那些不能写进函数里面的功能的,好比必须要等到函数完成后的一些操作一样,(那么函数完成之前的工作怎么办呢?)  之前的学习笔记:...

    修饰器

      之前我一直有一个疑惑,就是修饰器里面对函数的操作为什么不能直接写进函数里面就好了吗?何必这么麻烦呢,当我进一步理解之后,原来修饰器的作用就是完成那些不能写进函数里面的功能的,好比必须要等到函数完成后的一些操作一样,(那么函数完成之前的工作怎么办呢?)

      之前的学习笔记:https://www.cnblogs.com/Gaoqiking/p/10470407.html

    map/reduce

      能够将函数的参数一下传进去,他能按顺序每次调用几个去自动执行完所有的

      参考链接:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014317852443934a86aa5bb5ea47fbbd5f35282b331335000

    过滤器

      参考链接:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431821084171d2e0f22e7cc24305ae03aa0214d0ef29000

    排序

      参考链接:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014318230588782cac105d0d8a40c6b450a232748dc854000

    偏函数

      参考链接:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143184474383175eeea92a8b0439fab7b392a8a32f8fa000

      能不能让自定义的函数使用这个特性呢?想着是应该可以的吧

      偏函数的作用就是把函数的一些参数(这个函数的返回值是一个函数,可以理解为用它来选择函数)给固定起来,或者说是可以在以后使用的时候传递其他值,而且使用非常方便

    #使用int做N进制转换
    >>> int('12345', base=8)
    5349
    #用下面这个例子引入偏函数
    #我们要是自定义一个可以让int()中的base变成可以接受我们传入的进制的话是要这样
    def int2(x, base_mark=2):***********************************************这里可以是base,也可以是basee
        return int(x, base_mark)
    >>> int2('1000000')
    64
    #使用python中提供的偏函数的话就可以将代码简化为这样
    >>> import functools
    >>> int2 = functools.partial(int, base=2)#只需要一行代码***********************************************这里必须是base,不可以是basee
    >>> int2('1000000') 64

      也可以在调用时传入其他值

      注意,构建偏函数时固定的参数如果是关键字参数,必须要使用原来的关键字,比如上面的base在定义的时候,即关键字要符合原来的函数

    >>> int2('1000000', base=10)
    1000000
    

      当函数的参数个数太多,需要简化时,使用 functools.partial 可以创建一个新的函数,这个新函数可以固定住原函数的部分参数,从而在调用时更简单。

     

    关键字参数:

      关键字参数就是**kw,而调用函数时对应于关键字参数的是一个字典

    #如
    dict={'base':'2'}
    int('55',dict)#相当于int('55',base=2)
    

      

    转载于:https://www.cnblogs.com/Gaoqiking/p/10734847.html

    展开全文
  • python 高阶函数

    2019-12-07 15:00:09
    何必这么麻烦呢,当我进一步理解之后,原来修饰器的作用就是完成那些不能写进函数里面的功能的,好比必须要等到函数完成后的一些操作一样,(那么函数完成之前的工作怎么办呢?) 使用高阶函数不要忘记 from ...

    修饰器

    之前我一直有一个疑惑,就是修饰器里面对函数的操作为什么不能直接写进函数里面就好了吗?何必这么麻烦呢,当我进一步理解之后,原来修饰器的作用就是完成那些不能写进函数里面的功能的,好比必须要等到函数完成后的一些操作一样,(那么函数完成之前的工作怎么办呢?)

    使用高阶函数不要忘记

    from functools import map
    

    map/reduce

    能够将函数的参数一下传进去,他能按顺序每次调用几个去自动执行完所有的,使用map记得在函数和iterable中加逗号

    map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。

    reduce把一个函数作用在一个序列[x1, x2, x3, …]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算

    注意:

    reduce( )中的序列不能为空

    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333 
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    from functools import reduce
    def product(x, *y):
        return x * reduce(lambda a,b:a*b,y)
     
    product(5)
    #报错
    Traceback (most recent call last):
      File "C:\Users\ADMINI~1.SC-\AppData\Local\Temp\learn_python_w11zu113_py\test_7.py", line 8, in <module>
        print('product(5) =', product(5))
      File "C:\Users\ADMINI~1.SC-\AppData\Local\Temp\learn_python_w11zu113_py\test_7.py", line 5, in product
        return x * reduce(lambda a,b:a*b,y)
    TypeError: reduce() of empty sequence with no initial value
    #正确的
    from functools import reduce
    def product(x, *y):
        if len(y)==0:
            return x
        else:
            return x * reduce(lambda a,b:a*b,y)
     
     
    #结果
    5
    

    过滤器filter

    用于过滤序列,接受一个函数和一个序列,通过判断函数的返回值是False或者True来判断是否保留元素,把所有保留的元素作为一个新序列返回

    作者举得例子当中,

    def not_empty(s):
        return s and s.strip()#我开始觉得可以直接返回s.strip(),后来发现这样不能处理None,然后我不知道这个s and s.strip()是什么意思
     
    list(filter(not_empty, ['A', '', 'B', None, 'C', '  ']))
    # 结果: ['A', 'B', 'C']
     
     
    #如果其中有None、或者空’‘ 就返回None或者’‘
    >>> None and ''
    >>> None and ' a'
    >>> '' and 'a'
    ''
    #其他就返回后面的那个
    >>> 'a' and 'b'
    'b'
    >>> 'b' and 'a'
    'a'
    >>>
    

    用filter()这个高阶函数,关键在于正确实现一个“筛选”函数。

    注意到filter()函数返回的是一个Iterator,也就是一个惰性序列,所以要强迫filter()完成计算结果,需要用list()函数获得所有结果并返回list。

    最后作者介绍了一个使用埃式算法实现构建素数列表的一个例子

    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333 
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    def _odd_iter():
        n=3
        while True:
            n+=2
            yield n
     
    def _not_divisable(n):
        return lambda x:x%n>0#关于这一行代码,返回的是一个函数对象,
    def prime():
        yield 2
        it=_odd_iter()
        while True:
            n=next(it)
            yield n
            it=filter(_not_divisable(n),it)#这里的_not_divistable(n)实际是lambda x:x%n>0,虽然filter会把序列中的元素依次的传递给前面的函数,但是这个由lambda语句组成的函数对象只在filter执行的第一次时候被创建,然后后面的序列中的元素传给了x,即n并不会变
         #看到这里为什么不把_not_divisable(n) 直接换为lambda x:x%n>0呢,因为这样就固定不了n的值了
    for i in prime():
        if i<1000:
            print(i)
        else:
            break
    #输出
    会输出1000内的素数
    

    排序sorted()

    可以对字符串和数字排序

    sorted(iterable, /, *, key=None, reverse=False)
        Return a new list containing all items from the iterable in ascending order.
     
        A custom key function can be supplied to customize the sort order, and the
        reverse flag can be set to request the result in descending order.
     
    key关键字指定一个函数,可以实现自定义的排序,详细过程是通过让每个元素都经过该函数的处理,形成一个新的副本,对这个副本进行排序,然后返回这个副本的排序结果中每个元素的原来值。
    key=abs#按绝对值大小排序
    key=str.lower#忽略大小写
    

    sorted()也是一个高阶函数。用sorted()排序的关键在于实现一个映射函数。

    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333 
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
    def by_name(t):
        return t[0][0].lower()#注意是这样写的
    def by_score(t):
        return t[0][1]
         
    L2 = sorted(L, key=by_name)#按名字排序
    print(L2)
    #输出
    [('Adam', 92), ('Bob', 75), ('Bart', 66), ('Lisa', 88)]
    

    偏函数

    能不能让自定义的函数使用这个特性呢?想着是应该可以的吧

    偏函数的作用就是把函数的一些参数(这个函数的返回值是一个函数,可以理解为用它来选择函数)给固定起来,或者说是可以在以后使用的时候传递其他值,而且使用非常方便

    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333 
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    #使用int做N进制转换
    >>> int('12345', base=8)
    5349
    #用下面这个例子引入偏函数
    #我们要是自定义一个可以让int()中的base变成可以接受我们传入的进制的话是要这样
    def int2(x, base_mark=2):***********************************************这里可以是base,也可以是basee
        return int(x, base_mark)
    >>> int2('1000000')
    64
    #使用python中提供的偏函数的话就可以将代码简化为这样
    >>> import functools
    >>> int2 = functools.partial(int, base=2)#只需要一行代码***********************************************这里必须是base,不可以是basee
    
    
    >>> int2('1000000') 64
    

    也可以在调用时传入其他值

    注意,构建偏函数时固定的参数如果是关键字参数,必须要使用原来的关键字,比如上面的base在定义的时候,即关键字要符合原来的函数

    >>> int2('1000000', base=10)
    1000000
    

    当函数的参数个数太多,需要简化时,使用 functools.partial 可以创建一个新的函数,这个新函数可以固定住原函数的部分参数,从而在调用时更简单。

    展开全文
  • 跟家庭作业1不同的是,所有的功能定义必须提交在单一的,适当的注释,并且命名为<hawkid>.py的Python文件里。当然,你也可以在截止日期前提一直交新的方案。 注意:如果你交的文件是RTF文件,word文档或其包含...
  • Python中有些函数参数类型为元组,其内1个元素,这样创建是错误的: c = (5) # NO! 它实际创建一个整型元素5,必须要在元素后加一个逗号: c = (5,) # YES! 2 默认参数设为空 含有默认参数函数,如果类型为...

    1 含单个元素的元组

    Python中有些函数的参数类型为元组,其内有1个元素,这样创建是错误的:

    c = (5) # NO!
    

    它实际创建一个整型元素5,必须要在元素后加一个逗号:

    c = (5,) # YES!
    

    2 默认参数设为空

    含有默认参数的函数,如果类型为容器,且设置为空:

    def f(a,b=[]):  # NO!    print(b)    return bret = f(1)ret.append(1)ret.append(2)# 当再调用f(1)时,预计打印为 []f(1)# 但是却为 [1,2]
    
    在学习过程中有什么不懂得可以加我的
    python学习扣扣qun,⑧⑤⑤-④零⑧-⑧⑨③
    群里有不错的学习视频教程、开发工具与电子书籍。
    与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容
    
    

    这是可变类型的默认参数之坑,请务必设置此类默认参数为None:

    def f(a,b=None): # YES!    pass
    

    3 共享变量未绑定之坑

    有时想要多个函数共享一个全局变量,但却在某个函数内试图修改它为局部变量:

    i = 1def f():    i+=1 #NO!    def g():    print(i)
    

    应该在f函数内显示声明i为global变量:

    i = 1def f():    global i # YES!    i+=1
    

    4 列表快速复制之坑

    在python中*与列表操作,实现快速元素复制:

    a = [1,3,5] * 3 # [1,3,5,1,3,5,1,3,5]a[0] = 10 # [10, 2, 3, 1, 2, 3, 1, 2, 3]
    

    如果列表元素为列表或字典等复合类型:

    a = [[1,3,5],[2,4]] * 3 # [[1, 3, 5], [2, 4], [1, 3, 5], [2, 4], [1, 3, 5], [2, 4]]a[0][0] = 10 #
    

    结果可能出乎你的意料,其他a[1[0]等也被修改为10

    [[10, 3, 5], [2, 4], [10, 3, 5], [2, 4], [10, 3, 5], [2, 4]]
    

    这是因为*复制的复合对象都是浅引用,也就是说id(a[0])与id(a[2])门牌号是相等的。如果想要实现深复制效果,这么做:

    a = [[] for _ in range(3)]
    

    5 列表删除之坑

    删除一个列表中的元素,此元素可能在列表中重复多次:

    def del_item(lst,e):    return [lst.remove(i) for i in e if i==e] # NO!
    

    考虑删除这个序列[1,3,3,3,5]中的元素3,结果发现只删除其中两个:

    del_item([1,3,3,3,5],3) # 结果:[1,3,5]
    

    正确做法:

    def del_item(lst,e):    d = dict(zip(range(len(lst)),lst)) # YES! 构造字典    return [v for k,v in d.items() if v!=e]
    

    以上就是5个常见的坑点,希望看到这里的朋友能避开这些坑。

    展开全文
  • 昨天刚写的函数,今天忘了怎么调用了! 73年的牛老了吗? 在此强调一下下: 调用方法: 函数名称再加() 对,必须加(),如果有参数的,()里要写上参数!
  • Python语言一个比较Pythonic的功能,也是一个具有很强大功能的特性,那就是装饰器。那什么是装饰器呢?顾名思义,装饰器就是用来修饰某个函数,在不改变原来方法代码的前提下,额外的附加其他的功能和属性。可能...
  • Python类self

    2019-03-25 17:55:23
    首先明确的是self只有在类的方法中才会必须,在调用时不必传入相应的参数。 独立的函数或方法是不必带self的。 self指向当前对象自身。 ps(self名称不是必须的,在python中self不是关键词,你可以定义成a或b...
  • python学习记录(17)

    2020-12-13 16:17:40
    2. 函数可以多个参数吗? 可以的 3. 创建函数使用什么关键字,要注意什么? 函数的关键字虚要符合规范,必须以字母、 4. 请问这个函数有多少个参数? def MyFun((x, y), (a, b)): return x * y - a * b 复制代码 ...
  • python菜鸟记录

    2021-01-12 21:08:52
    类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。 self只有在类的方法中才会有,独立的函数或方法是不必带有self的。 self在定义类的方法时是必须有的...
  • 反转数字 python 版本

    2020-12-01 15:50:05
    题目描述 将给出的整数x翻转。 例1:x=123,返回321 例2:x=-123,返回-321 ...这样的话你必须重新设计函数(比如添加一个额外的参数)。 示例1 输入 -123 返回值 -321 解题思路:利用切片反转技术 # # @param
  • python初体验(2)——面向对象篇

    千次阅读 2011-05-29 22:59:00
    在学习python的面向对象时,我始终参照的是c++的面向对象机制。相对而言,python的面向对象确实更简单一些。 基础: 整数也被作为对象。... 类的方法的第一个参数必须是self?为什么?目前来说不带self是会运
  • 这样的话你必须重新设计函数(比如添加一个额外的参数) 示范: 实现办法题目描述:示范:C语言实现思路分析代码实现python实现思路:首先对数据进行分类,主要对X>0和X<0两大类讨论,我们不妨将数字转变为...
  • SpringMVC【参数绑定、数据回显、文件上传】 SpringMVC【校验器、统一处理异常、RESTful、拦截器】 SpringBoot就是这么简单 SpringData JPA就是这么简单 Spring IOC知识点一网打尽! Spring AOP就是这么简单啦 外行...
  • 2. 函数参数:默认参数、可变参数、关键字参数 3. 变量作用域:局部变量和全局变量 4. 匿名函数的定义及使用 5. 高级函数(map、reduce、filter)的使用 (五)面向对象程序设计 【考试要求...
  • 因此你必须有办法将两者区别开来。以下就是你可以采用的几种方法。你可以选用其中一种你最适应的并且就这样坚持这种方法! 从HTML中分离 以下是可以使用的方法: <script language="php"> . . . 语句 与Perl...
  • 【编程题】反转数字

    2020-08-20 17:21:41
    【题目简介】 将给出的整数x翻转。 例1:x=123,返回321 ...这样的话你必须重新设计函数(比如添加一个额外的参数)。 示例: 输入 -123 输出 -321 【重要问题】C++和Python在整除和取余上是存在差异
  • 总而言之,你一次性将参数的类型,主体等声明为函数参数。 你可以使用标准的现代Python类型来做到这一点。 你不必学习新的语法,特定库的方法或类等。 只是标准的Python 3.6 +。 例如,对于一个int: item_id: int ...
  • 它给出了预测函数,特征提取,学习算法,性能评估,交叉验证,样本偏差,非平稳性,过度拟合和超参数调整的整体观点。 通过内核技巧实现支持向量机 | 第16天 使用Scikit-Learn库实现了SVM算法以及内核函数,该函数...
  • 4.5.2 你们线上应用的JVM参数有哪些。 4.5.3 g1和cms区别,吞吐量优先和响应优先的垃圾收集器选择。 4.5.4 怎么打出线程栈信息。 开源框架 4.5.5 简单讲讲tomcat结构,以及其类加载器流程,线程模型等。 4.5.6 ...
  • # - MaxLabelNum: 该参数在使用CTC损失函数时将被忽略,仅用于使用交叉熵作为损失函数/标签数固定时使用 # ModelField 为 Text 时: # - 该类型暂时不支持 FieldParam: Category: {Category} Resize: {Resize} ...
  • 没办法,要深入学习必须要看源码。身为小菜鸟的我,每逢看源码时就找不到个准头,看着看着就迷糊了。恰巧今天逛知识星球时,看一个球友的回答觉得非常好,特此转录一下 如何写好注释 请停止代码注释 如何写Java...
  • - 函数内部的参数arguments包含了传入的所有参数 - this,表示在这个函数内的作用域,以及prototype 理解匿名函数和闭包 匿名函数又叫拉姆达函数,主要是在把函数当值传递的时候用,或者是...
  • 精通正则表达式(中英)

    热门讨论 2011-09-08 13:18:58
    无法匹配时必须进行的工作 230 看清楚一点 231 多选结构的代价可能很高 231 性能测试.. 232 理解测量对象 234 php测试 234 java测试 235 vb.net测试 237 ruby测试 238 python测试 238 tcl测试 239 常见优化措施 240 ...

空空如也

空空如也

1 2
收藏数 36
精华内容 14
关键字:

python函数必须有参数吗

python 订阅