〖Python〗-- 函数


【函数】

函数在计算机中解释为ubroutine(子进程或子过程)

 函数定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可

 语法定义:

   不带参数:

def sayhi(): #函数名

          print("hello , world!")

        sayhi() #调用函数

    带参数:

        

      #下面这段代码
      a,b = 5,8
      c = a**b
      print(c)

      #改成用函数写
      def calc(x,y):
          res = x**y
        return res #返回函数执行结果

      c = calc(a,b) #结果赋值给c变量
      print(c)

    函数特性

      1减少重复代码

      2提高代码可扩展性

      3使程序变的易维护

  参数

    必须参数

      必须以参数定义的顺序传入函数,调用的时候也必须按顺序全部调用

      

    def f(name,age):

        print(‘I am %s,I am %d‘%(name,age))

    f(‘ShengXin‘,18)
    f(‘alvin‘,16)

    关键字参数

      所谓的关键字参数,类似于字典的键值对,通过关键字调用函数,就相当于通过键找值。

      

    def f(name,age):

        print(‘I am %s,I am %d‘%(name,age))

    # f(16,‘alvin‘) #报错
    f(age=16,name=‘alvin‘)

    默认参数

      在关键字参数的基础上,某些参数给默认值,不修改的话,显示默认值,不修改无需再调用,会自动显示

    def print_info(name,age,sex=‘male‘):  #默认参数放在最后

        print(‘Name:%s‘%name)
        print(‘age:%s‘%age)
        print(‘Sex:%s‘%sex)
        return

    print_info(‘Shengxin‘,18)    #sex不给值,显示默认值
    print_info(‘铁锤‘,40,‘female‘)  #修改sex的值,显示修改后的值

    不定长参数

      在用户输入参数不确定个数的情况下,使用不定长参数,分类如下:

      *kwargs

         多传入的参数以元组的形式保存

        

      def stu_register(name,age,*args): # *args 会把多传入的参数变成一个元组形式
          print(name,age,args)

      stu_register("ShengXin",22)
      #输出
      #ShengXin 22 () #后面这个()就是args,只是因为没传值,所以为空

      stu_register("Jack",32,"CN","Python")
      #输出
      # Jack 32 (‘CN‘, ‘Python‘)

      **kwargs

        多传入的参数以字典形式保存

      

      def stu_register(name,age,*args,**kwargs): # *kwargs 会把多传入的参数变成一个dict形式
          print(name,age,args,kwargs)

      stu_register("Shengxin",22)
      #输出
      #Alex 22 () {}#后面这个{}就是kwargs,只是因为没传值,所以为空

      stu_register("Jack",32,"CN","Python",sex="Male",province="ShanDong")
      #输出
      # Jack 32 (‘CN‘, ‘Python‘) {‘province‘: ‘ShanDong‘, ‘sex‘: ‘Male‘}

  局部变量

    在函数中重新定义函数外的同名函数,函数值在函数内部生效,作用域为函数,所定义的变量是局部变量

    

    name = "Shengxin" #全局变量

    def change_name(name):
        print("before change:",name)
        name = "changed name"     #局部变量
        print("after change", name)

    change_name(name)

    print("在外面看看name改了么?",name)

  返回值

    return

      在函数中,return会结束本层执行,并返回结果

      函数的默认返回值为:none

  递归

    在函数中调用函数本身

    

    def calc(n):
        print(n)
        if int(n/2) ==0:
            return n
        return calc(int(n/2))

    calc(10)

    特性:

      必须有一个明确的结束条件

      每次进入下一层递归时,计算规模应该减少

      递归函数执行效率低,过多的递归会导致栈溢出

  匿名函数

    在python中使用lambda来创建匿名函数

    格式:

      lambda arg1,arg2... : <expression>

    

        #算一个数的平方    def calc(n):
        return n**n
    print(calc(10))

    #换成匿名函数
    calc = lambda n:n**n
    print(calc(10))

    作用:

      匿名函数主要是和其它函数搭配使用

      

    res = map(lambda x:x**2,[1,5,7,4,8])
    for i in res:
        print(i)

  函数式编程

  高阶函数

    函数名可以作为参数输入

    函数名可以作为返回值

    

    def add(x,y,f):
        return f(x) + f(y)

    res = add(3,-6,abs)
    print(res)

  内置函数

    python内置的函数

  

作用域

  python中的作用域分4种情况:

  • L:local,局部作用域,即函数中定义的变量;
  • E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的;
  • G:globa,全局变量,就是模块级别定义的变量;
  • B:built-in,系统固定模块里面的变量,比如int, bytearray等。 搜索变量的优先级顺序依次是:作用域局部>外层作用域>当前模块中的全局>python内置作用域,也就是LEGB。

    x = int(2.9)  # int built-in
    
    g_count = 0  # global
    def outer():
        o_count = 1  # enclosing
        def inner():
            i_count = 2  # local
            print(o_count)
        # print(i_count) 找不到
        inner()
    outer()
    
    # print(o_count) #找不到

      

				
时间: 2024-12-08 04:51:07

〖Python〗-- 函数的相关文章

浅析python函数

慢慢的开始进入状态啦,被明老师说我什么都不会后我觉得是该反思下自己这个学期的学习了,虽然我对实验没有很大的兴趣,但是既然名老师要求我开始做实验,我就跟着小丹师姐好好学学,用Tanger师兄的话来说就是:做实验有利于你理解生物信息学数据处理的原理,也许有一天,未来做生物信息的学弟学妹会看到这段话,就像我在码迷上看到free_mao的博文一样,生物信息还是基于生物的,生物原理必须要理解,不然和做计算机有什么区别呢?以前对书本的知识不够重视,语言的学习进度很缓慢,现在希望能分享一些学习心得体会给大家,

python函数

python函数学习 1. 概述: 函数是重用的程序段,用关键字def来定义,可以任意多次地运行这个语句块,被称为调用函数.Python提供了许多内建函数,比如print(),也可以自己创建函数,这被叫做用户自定义函数,函数能提高应用的模块性,和代码的重复利用率. 2.函数语法: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号(). 任何传入参数和自变量必须放在圆括号中间.圆括号之间可以用于定义参数. 函数的第一行语句可以选择性地使用文档字符串-用于存放函数说明. 函数内容以冒号起

Python 函数对象 命名空间与作用域 闭包函数 装饰器 迭代器 内置函数

一.函数对象 函数(Function)作为程序语言中不可或缺的一部分,但函数作为第一类对象(First-Class Object)却是 Python 函数的一大特性. 那到底什么是第一类对象(First-Class Object)呢? 在 Python 中万物皆为对象,函数也不例外,函数作为对象可以赋值给一个变量.可以作为元素添加到集合对象中.可作为参数值传递给其它函数,还可以当做函数的返回值,这些特性就是第一类对象所特有的. 1.函数身为一个对象,拥有对象模型的三个通用属性:id.类型.和值.

python 函数

函数的定义 函数最重要的目的是方便我们重复使用相同的一段程序. 将一些操作隶属于一个函数,以后你想实现相同的操作的时候,只用调用函数名就可以,而不需要重复敲所有的语句. 创建函数 def 函数名 (参数列表) 函数体 例如: def sum1(a,b): c = a + b return c e=1 f=2 print (sum1(e,f)) 首先def 是定义函数名 sum1是函数名 括号中的a, b是函数的参数,是对函数的输入.参数可以有多个,也可以完全没有(但括号要保留). c = a +

Python 五、Python函数

一.函数概述 1.函数的基础概念 函数是python为了代码最大程度地重用和最小化代码冗余而提供的基础程序结构. 函数是一种设计工具,它能让程序员将复杂的系统分解为可管理的部件 函数用于将相关功能打包并参数化 在python中可以创建4种函数: 全局函数:定义在模块中 局部函数:嵌套于其它函数中 lambda(匿名)函数:仅是一个表达式 方法:与特定数据类型关联的函数,并且只能与数据类型关联一起使用 函数和过程的联系:每个Python函数都有一个返回值,默认为None,也可以使用"return

六、Python函数

Python函数 一.函数 函数就是完成特定功能的一个语句组,这组语句可以作为一个单位使用,并且给它取一个名字 可以通过函数名在程序的不同的地方多次执行(这通常叫做函数调用),却不需要在所有地方都重复编写这些语句 自定义函数和预定义函数 函数作用:降低编程的难度.代码重用 当我们自己定义一个函数时,通常使用def语句 def 函数名(参数列表): #可以没有参数 函数体 #!/usr/bin/python a = int(raw_input("please enter a number:&quo

Python 3.X 调用多线程C模块,并在C模块中回调python函数的示例

由于最近在做一个C++面向Python的API封装项目,因此需要用到C扩展Python的相关知识.在此进行简要的总结. 此篇示例分为三部分.第一部分展示了如何用C在Windows中进行多线程编程:第二部分将第一部分的示例进行扩展,展示了如何在python中调用多线程的C模块:第三部分扩展了第二部分,增加了在C模块的线程中回调python的演示. 本文所用的环境为:64位Win7 + python 3.4 x86 + vs2010 一.windows下的C语言多线程程序 windows下多线程编程

python函数及函数式编程

函数是对程序逻辑进行结构化或过程化的一种编程方法.函数与过程相比,两者都是可以被调用的实体,但是传统意义上的函数或者"黑盒",可能不带任何输入参数,经过一定的处理,最后向调用者传回返回值,而过程是简单.特殊.没有返回值的函数.其实,python的过程就是函数,因为在函数中如果没有显式return返回值的话,解释器会隐式地返回默认值None. 1.函数定义 def foo([argument-list]): "function_document_string" foo

Python函数信息

Python函数func的信息可以通过func.func_*和func.func_code来获取 一.先看看它们的应用吧: 1.获取原函数名称: 1 >>> def yes():pass 2 3 >>> a=yes 4 >>> a.func_name 5 'yes' 6 >>> 2.获取函数的flags[后面有用,先说这个] [python docs]:The following flag bits are defined for c

Python函数以及函数式编程

本文和大家分享的主要是python 函数及函数式编程相关内容,一起来看看吧,希望对大家 学习python有所帮助. 函数基本语法及特性 定义 数学函数定义: 一般的,在一个变化过程中,如果有两个变量 x 和 y ,并且对于 x 的每一 个确定的值, y都有唯一确定的值与其对应,那么我们就把 x 称为自变量,把 y 称为因变 量, y 是 x 的函数.自变量 x 的取值范围叫做这个函数的定义域. 但编程中的「函数」概念,与数学中的函数是有很  同的  函数是逻辑结构化和过程化的一种编程方法 函数的