首页 > 编程语言 >python基础-函数

python基础-函数

时间:2024-02-28 13:23:40浏览次数:15  
标签:函数 python args 基础 元组 参数 kwargs print

一、参数

示例
def fun(a,b=0,*args,**kwargs):
      """
      指定收集参数的固定形式,*+指定的位置参数名,惯例*args,自定义*position都行,**+指定的关键字参数名,惯例**kwargs,
      需要注意的是,在函数体内调用时不要混淆*的含义,*+数据序列,指展开序列,取其中的值,而想使用传入的位置实参或关键字实参,
      则通过调用指定的参数名args或kwargs来实现,args是所有位置参数组成的元组,通过下标调用,kwargs是关键字参数组成的字典,通过键值调用
      """
      print(a,b)
      print(*args)
      print(args[0])
      print(*kwargs) #**是不对的,*的用法是展开数据序列,取出所有元素
      print(kwargs['name'])
fun(1,2,3,4,name='孙悟空')

参数:
位置参数:在定义函数时,参数的名字和位置已经确定
关键字传参:传入实参时,明确形参的变量名,参数之间的位置不存在先后顺序,函数调用时,通过‘‘键=值’’的形式加以指定,清除了参数的顺序问题
注意:函数调用时,如果位置传参,位置参数要在关键字传参之前
默认参数(缺省参数):参数可以在定义时指定默认值,调用时不传实参就会使用默认值,单默认参数在定义时要放在最后位置
可变参数(收集参数):
位置可变参数args,接收所有位置参数,返回一个元组,元组的变量名就是args,在执行代码中,使用args展开元组,取出其中所有元素,args则是由位置参数组成的元组,可以通过下标调用其中的某个
关键字可变参数**kwargs,接收所有关键字参数,返回一个字典,字典的变量名是kwargs,通过关键字调用,如kwargs['name']
二、变量
局部变量:定义在函数内部的变量,只在函数内部生效
全局变量:定义在函数外部的变量,在函数内部和外部都生效,函数内可直接调用
函数内修改全局变量:对于不可变类型如字符串、数值、元组的修改,需要使用global关键字先声明,之后再修改,这样外面的全局变量也跟着修改了,对于可变类型的列表、字典、集合,不需要该关键字进行声明(声明也不报错),函数内修改后,全局的也会被修改
局部变量与全局变量重名时:函数内定义了和全局变量相同的变量名,函数会默认将改变量视为局部变量,对该变量操作,不影响全局变量
三、返回值
return后面可以是列表、元组、字典形式,其元素为任意类型,也可以直接返回多个数据,用逗号隔开,也可直接写return,无返回值,不写return时,代码执行完毕自动返回
函数执行到return会退出当前函数
四、拆包、解构
元组拆包:a,b=(1,2)
字典拆包:默认取来的是键,k1,k2={'姓名':"lyc","年龄":20} ==》k1=‘姓名’,k2='年龄' ,.items()取来的是元组,.values()取来的是值
五、函数
递归函数:切记一定要设计好出口,即当某个条件满足时,返回,不在递归
lambda函数: 语法 函数名=lambda 形参 :表达式 ==》返回的是一个待执行的函数
形参的写法与普通函数完全一直,只是不用放在()中,当不需要传参时,可以省略
lambda函数能够接收任意数量的参数,但只能返回一个表达式的值
使用时机,当函数有一个返回值,且只有一句代码时,可以用lambda函数简写
高阶函数:就是基于已有的函数,以函数做为参数,定义一个新的函数
内置高阶函数:

1、filter( 函数名, 可迭代对象 ) 作用:过滤序列中不符合条件的元素

示例
列表名 = [1,2,3,4,5,6,7,8,9,10]

def 函数名(x):
        return x % 2 == 0

结果 = filter(函数名,列表名)
print(结果)  # 打印的是对象地址
print(list(结果))

注: filter有两个参数,第1参数可以是函数,也可以是None. 当第1个参数是函数的时候,将第2个参数中每个元素按照传入函数的代码逻辑进行计算。 当第1个参数是None时,直接将第二个参数中为True的值筛选出来。 最终返回的是一个可以转换为列表的对象

2、map( 函数名,迭代对象 ) 作用:将可迭代对象的每一个元素作为函数的参数进行运算加工,直到可迭代序列每个元素都加工完毕。

示例
计算列表序列中各数字的2次方

列表名 = [1,2,3,4]

def 函数名(x):
        return x ** 2

结果 = map(函数名,列表名)

使用lambda函数:
结果=list( map( lambda x : x ** 2 , 列表名 ) )

print(结果)        # 打印出来的是对象的地址
print(list(结果))   # 使用类型转换

3、reduce( 函数名(x,y) , 可迭代对象 ) 作用:函数中必需有2个参数,每次函数计算的结果继续和序列的下一个元素做累积计算。

示例
计算  下面列表数据之和

import functools      # 导入模块

列表名 = [1,2,3,4]

def 函数名(a,b):
        return a + b

结果 = functools.reduce(函数名,列表名)

使用lambda函数:
结果=functools.reduce( lambda x , y : x + y , range( 1,101 ) )
print(结果)

标签:函数,python,args,基础,元组,参数,kwargs,print
From: https://www.cnblogs.com/36study-cheng/p/18039967

相关文章

  • 掌握字符与字符串:C语言中的神奇函数解析(二)
    ✨✨欢迎大家来到贝蒂大讲堂✨✨......
  • Python面向对象,类属性,实例属性,类方法,实例方法,静态方法的区别及用法详解
    一.前言在Python的面向对象编程中,类属性和实例属性是两个不同的概念,它们在作用域和使用方式上有所区别。在Python中的面向对象编程中有三种方法:实例方法、类方法和静态方法,它们之间的差异主要体现在参数传递和调用方式上。二.面向对象-类属性和实例属性1.区别在Pyth......
  • 以68键盘为基础打造71键盘
    到该网址:http://www.keyboard-layout-editor.com/#/打造如下键位图:  键盘说明:1.可以通过Fn+\打开背光修改,Fn+-前向浏览灯效,Fn++后向浏览灯效;Fn+^调亮背光,Fn+v调暗背光;Fn+左背光速减小,Fn+右背光速增加;2.Fn+Win锁定win键,防止在某些情况下激活win功能;3.Fn+6打开数字小......
  • Lua调试函数 debug.getinfo() namewhat详解
    Lua调试的时候会用到debug.getinfo()函数,what的值文档给了解释:"Lua":Luafunction"C":Cfunction"main":mainpartofachunk(通过load函数等执行的语句)关于namewhat的值到底表示什么,官方文档只是简单列举(不全)。列举一些常见情况localgetinfo=debug.getinfol......
  • C语言基础知识入门(一)
    C语言一经出现就以其功能丰富、表达能力强、灵活方便、应用面广等特点迅速在全世界普及和推广。C语言不但执行效率高而且可移植性好,可以用来开发应用软件、驱动、操作系统等。C语言也是其它众多高级语言的鼻祖语言,所以说学习C语言是进入编程世界的必修课!一.C语言特点概述C语言......
  • Python: Star unpacking expressions in for statements
    今天发现在Python3.11版本中一个很不错的新特性,可以在for循环中使用unpacking,这意味着可以更灵活地组合迭代对象。ls=[1,2,34]foriin1,2,3,*ls,789:print(i)"""1231234789"""其实我第一次知道for循环中可以使用x,y,z这样的结构,想想也是......
  • SpringCloud系列之(一)微服务架构零基础理论入门
    微服务架构零基础理论入门一、微服务架构概述1.什么是微服务由MartinFlower提出微小的、独立的进程、轻量级、可独立部署​ 微服务架构是种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,......
  • Java基础(六)
    Java基础(六)今日目标:TreeSet集合排序算法查找算法Map集合集合嵌套1TreeSet集合1.1集合体系CollectionList接口ArrayList类LinkedList类Set接口HashSet集合TreeSet集合1.2TreeSet特点不包含重复元素的集合[元素唯一]没有带索......
  • Python语言Numpy包之Meshgrid 函数
    Meshgrid函数的基本用法在Numpy的官方文章里,meshgrid函数的英文描述也显得文绉绉的,理解起来有些难度。可以这么理解,meshgrid函数用两个坐标轴上的点在平面上画网格。用法:[X,Y]=meshgrid(x,y)[X,Y]=meshgrid(x)与[X,Y]=meshgrid(x,x)是等同的[X,Y,Z]......
  • Python scipy.ndimage.find_objects用法及代码示例
    用法scipy.ndimage.find_objects(input,max_label=0)在标记数组中查找对象。参数:input:整数数组包含由不同标签定义的对象的数组。值为0的标签将被忽略。max_label:整数,可选要在输入中搜索的最大标签。如果没有给出max_label,则返回所有对象的位置。object_slices:元组......