zoukankan      html  css  js  c++  java
  • 小甲鱼:Python学习笔记003_函数

    >>> # 函数
    >>> def myFirstFunction(params1,params2...):
    print("这是我的第一个函数!")
    print("Python你好吗?")


    >>> #调用函数
    >>>
    >>> myFirstFunction()
    这是我的第一个函数!
    Python你好吗?

    >>>  # 函数的返回值  return

    #函数文档, 就是函数的说明,与java里面的 /** */ 一样
    >>> # 它是使用 字符串的形式表示的
    >>>
    >>> def myFunction1(name):
    '这个就是函数文档 : 函数定义过程中的name是叫形参'
    # 因为它只是一个形式,表示占据一个参数位置
    print("传递进来的"+name+"叫实参,因为它是具体点的参数值!")


    >>> myFunction1('cxn')
    传递进来的cxn叫实参,因为它是具体点的参数值!
    >>>
    >>> # 函数也有一些特殊的属性, 比如显示函数文档的属性
    >>> # 特殊属性基本上都是以 __开始 __结束
    >>> myFunction1.__doc__
    '这个就是函数文档 : 函数定义过程中的name是叫形参'
    >>>

    >>>
    >>> # 关键字参数 ,就是在传递值时指定名称,以免传递出错
    >>>
    >>> def myFunction2(name,words):
    print(name+"-->"+words)


    >>> myFunction2("yangw","吃了吗?")
    yangw-->吃了吗?
    >>> myFunction2("吃了吗?","yangw")
    吃了吗?-->yangw
    >>> myFunction2(words="吃了吗?",name="yangw")
    yangw-->吃了吗?
    >>>

    >>> #默认参数, 是定义了默认值的参数
    >>> def myFunction3(name="yangw",words="吃了吗"):
    print(name+"-->"+words)


    >>> myFunction3()
    yangw-->吃了吗
    >>> myFunction3("cxn")
    cxn-->吃了吗
    >>>

    >>> # 关键字参数是函数在调用的时候,通过参数名指定需要赋值的参数,这样做就不怕因为搞不清参数的顺序而出错
    >>> #默认参数是在函数定义的时候,为形参赋初始值;当函数调用的时候忘记传参数,就会使用初始值

    >>> 收集参数(也叫可变参数),只要在参数前面加上*即可

    def test(*params):
    print("参数长度是:",len(params))
    print("第一个参数的值:",params[0])

    >>> test(1,"yangw","haha")
    参数长度是: 3
    第一个参数的值: 1
    >>> 如果收集参数后面还有参数,函数调用传递时使用 关键字参数

    >>>为了防止出错,定义函数的时候使用上默认参数

    >>>其实最好还是将收集参数定义在最后

    >>> def test2(lala,*params):
    print("参数长度是:",len(params),lala)


    >>> test2("nini",2,"we")
    参数长度是: 2 nini
    >>>

    局部变量(一般是在函数中定义的变量、函数参数)、全局变量(在函数之外定义的变量,作用域是在整个*.py文件中有效)

    可以在函数中访问全局变量,但是不要试图去修改它;如果要修改它,Python会使用屏蔽的方式来保护全局变量(Python会在函数内部创建一个名字一模一样的局部变量,这样的话修改只能修改到函数内部的局部变量,而不会影响到全局变量)

    >>>
    >>> # 使用global来声明函数中的变量就是全局变量
    >>> count=10
    >>> def myFunc():
    global count
    count=20
    print(count)


    >>> myFunc()
    20

    # Python在写一些脚本时,使用lambda就可以省下函数的定义过程,使用lambda可以使得代码更加简洁
    >>> # 对于一些比较抽线并且整个执行下来只需要的调用一两次的函数,有时候起个函数名也是头疼的,使用lambda就不需要考虑命名问题
    >>> # 还可以简化代码的可读性
    >>>
    >>>
    >>> def ds(x):
    return 2*x+1

    >>> ds(5)
    11
    >>> lambda x : 2*x+1
    <function <lambda> at 0x020DF8A0>
    >>> g=lambda x : 2 * x + 1
    >>> g(5)
    11
    >>> # lambda 的语法 冒号前面是参数,冒号后面是函数返回的内容
    >>>
    >>> # 两个参数的lambda
    >>>
    >>> g = lambda x , y : x + y
    >>> g(1,2)
    3
    >>>

    >>>
    >>> #比较实用的两个BIF函数 filter() map()
    >>> 

    >>> # filter(Function or None , iterable) ,第一个参数是函数或者None对象,第二个参数是可迭代的数据
    >>> # 如果第一个参数是函数,则将第二个参数中的每一个元素作为函数的参数计算,返回True的值筛选出来,定义成数组返回; 如果第一个参数是None对象,则将第二个参数中为True的值返回
    >>>
    >>> filter(None , [1,True,False,"2",0])
    <filter object at 0x020AAAB0>
    >>> list(filter(None , [1,True,False,"2",0]))
    [1, True, '2']
    >>>
    >>> # 我们举一个筛选出基数的例子
    >>> # 普通函数定义的方式
    >>> def odd(x):
    return x % 2

    >>> temp = range(10)
    >>> show = filter(odd,temp)
    >>> list(show)
    [1, 3, 5, 7, 9]
    >>>
    >>> # 改成lambda方式的函数
    >>>
    >>> list(filter(lambda x : x % 2 ,range(10)))
    [1, 3, 5, 7, 9]
    >>>
    >>>

    >>> # map(function , iterables) ,将第二个参数中的每一个值到放到第一个参数指定的函数中去计算,最后以数组形式返回计算后的结果
    >>>
    >>> list(map(lambda x : x+2, range(10)))
    [2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
    >>>
    >>>

    >>>
    >>> # 递归 ,函数自己调用自己
    >>> # Python3 默认的递归层次是100层,可以使用下面的方式设置递归的层次
    >>> import sys
    >>> sys.setrecursionlimit(1000)
    >>>

    *.py文件的内容

    # 下面的例子是使用递归方式实现阶乘
    def factorial(n):
    if(n == 1):
    return 1
    return n * factorial(n-1)

    number=int(input("请输入一个正整数:"))
    result = factorial(number)
    print("%d 的阶乘是 %d" %(number,result))

    运行

    >>>
    =============== RESTART: C:UsersAdministratorDesktopxxx.py ===============
    请输入一个正整数:5
    5 的阶乘是 120
    >>>

    ----------- 赠人玫瑰,手有余香     如果本文对您有所帮助,动动手指扫一扫哟   么么哒 -----------


    未经作者 https://www.cnblogs.com/xin1006/ 梦相随1006 同意,不得擅自转载本文,否则后果自负
  • 相关阅读:
    Get-CrmSetting返回Unable to connect to the remote server的解决办法
    Dynamics 365中的常用Associate和Disassociate消息汇总
    Dynamics 365 Customer Engagement V9 活动源功能报错的解决方法
    Dynamics Customer Engagement V9版本配置面向Internet的部署时候下一步按钮不可点击的解决办法
    Dynamics 365检查工作流、SDK插件步骤是否选中运行成功后自动删除系统作业记录
    注意,更改团队所属业务部门用Update消息无效!
    Dynamics 365的审核日志分区删除超时报错怎么办?
    Dynamics 365使用Execute Multiple Request删除系统作业实体记录
    Dynamics 365的系统作业实体记录增长太快怎么回事?
    Dynamics CRM日期字段查询使用时分秒的方法
  • 原文地址:https://www.cnblogs.com/xin1006/p/4950840.html
Copyright © 2011-2022 走看看