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 同意,不得擅自转载本文,否则后果自负
  • 相关阅读:
    网络流二十四题之魔术球问题
    网络流二十四题之P2764 最小路径覆盖问题
    网络二十四题 之 P2756 飞行员配对方案问题
    网络流 之 dinic算法
    网络流 之 增广路
    中南
    2249: Altruistic Amphibians 01背包的应用 + lh的简单图论 图转树求lca
    今日训练 搜索
    AD-logon workstation
    Centos7-docker安装
  • 原文地址:https://www.cnblogs.com/xin1006/p/4950840.html
Copyright © 2011-2022 走看看