python基础 函数 (四)

一  函数基本

def func1():print("hello world")return 1, "hello", ("wo", "ai"), ["ni", "da"], {"you": "xi"}   # return 可以返回任意# 结果: (1, 'hello', ('wo', 'ai'), ['ni', 'da'], {'you': 'xi'})
#    return func1  # 返回函数的内存地址# 结果: <function func1 at 0x7f32184adf28>print(func1())

 

# 总结:
#  返回值数:=0,返回None
#  返回值数:=1,返回对象object
#  返回值数:>1,返回元组

 

二  函数形参和实参

def test1(x, y): #  x, y  叫做 形参print(x)print(y)test1(1, 2)   # 1,2  叫做  实参     与形参位置一一对应
test1(x=1, y=2)   # 打印结果一样
test1(y=2, x=1)   # 打印结果一样    与形参顺序无关
# test1(x=1, 2)  # 报错   关键参数是不能写在位置参数前面的
test1(1, y=2)    # 不报错
# test1(1, x=1)    # 报错def test2(x, y, z):print(x, y, z)test2(1, y=2, z=3)
test2(1, z=3, y=2)  # 结果与上面一样
#test2(1, x=1, z=2)   # 报错,x位置赋予了两个值def test3(x, y=2):   #  y 是默认参数print(x, y)test3(1)  # 打印  1,2
test1(1,3)  #打印 1,3
test3(1, y=3)  #打印 1,3# 注:默认参数的特点,在调用的时候,可有可无
# 用途:默认安装软件

 

 

三  数组参数

def test4(*args):  #*args ===   args = tuple([])   # 接受位置参数print(args)   # 返回元组
    
test4(1,2,3,4)  # 打印: (1,2,3,4)
test4(*[1,2,3,4])  # 打印: (1,2,3,4)def test5(x, *args):   # 混合参数print(x)print(args)test5(1,2,3,4,5,6)
# 打印结果:
# 1
# (2,3,4,5,6))

 

 

四  字典参数

def test6(**kwargs):   # 接受字典的形式,  把关键字参数,转化为字典print(kwargs)   #   返回字典

test6(name="sam", age=28)    # 结果:{'name': 'sam', 'age': 28}
test6(**{'name': 'sam', 'age': 28})  # 结果一样def test7(name, **kwargs):print(name)print(kwargs)test7('sam')
# 结果
# sam
# {}# test7('sam', 'yong') # 报错,因为只能接受一个位置参数, 而kwargs只接受关键字参数
test7('sam', name="sam", age=28)
# 结果
# sam
# {'name': 'sam', 'age': 28}def test7(name, age=12, **kwargs):
#def test7(name, **kwargs, age=12):  # 报错print(name)print(age)print(kwargs)test7('sam', addr='beijing', phone=123456)  # 
# 结果
# sam
# 12
# {'addr': 'beijing', 'phone': 123456}

test7('sam', age=3, addr='beijing', phone=123456) 
test7('sam', 3,  addr='beijing', phone=123456) 
test7('sam', addr='beijing', phone=123456, age=3) 
# test7('sam',23, addr='beijing', phone=123456, age=3)  # 报错,age 多值错误
# 以上结果都一样
# sam
# 3
# {'addr': 'beijing', 'phone': 123456}def test8(name, age=12, *args, **kwargs):print(name)print(age)print(args)print(kwargs)test8('sam', age=3, addr='beijing', phone=123456) # 位置参数一定要写在关键字参数的前面
# 结果
# sam
# 12
# ()
# {'addr': 'beijing', 'phone': 123456}

 

 

五  局部变量 和 全局变量

 

name = "sam"
def func1():print(name)
#   name = "jey"  # 程序会报错  UnboundLocalError: local variable 'name' referenced before assignment
func1()
# 结果
# sam

 

name = 'sam'
def chname(name):print("before change name:", name)name = 'jey'   # 这个变量的作用域只在这个函数中print("after change name:", name)chname(name)
print(name)  # sam   没有变
# 结果
# before change name:sam
# after change name:jey
# sam

 

如果要在函数中修改全局变量,使用global 申明变量

name = 'gao'
def testname():global name   # 引用全局变量   最佳实践  global 不要用print(name)   # gaoname = 'shao'print(name)   # shao

testname()    
print(name)  # shao 改变了

 

# 注:只有数字,字符串 不能再函数中改,但是,列表,字典,集合能改

names = ['sam', 'jey', 'snow']def test9():print(names)name[0] = 'sammy'print(names)test9()
print(names)
# 结果
# ['sam', 'jey', 'snow']
# ['sammy', 'jey', 'snow']
# ['sammy', 'jey', 'snow']

 

转载于:https://www.cnblogs.com/gaosy-math/p/7401631.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253714.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c#注释

c#的注释分为&#xff1a;这里不能不说一下什么是注释。 注释本身不会执行&#xff0c;只是说明性文字&#xff0c;只供程序员阅读。 注释又分为&#xff1a;单行注释&#xff0c;多行注释&#xff0c;文档注释。 单行注释&#xff1a;//开始 多行注释&#xff1a;/*开始&#…

嵌入式linux字符设备驱动

1. 我们需要先调用register_chrdev_region()或 alloc_chrdev_region()来向系统申请设备号int register_chrdev_region( dev_t first, unsigned int count, char *name ); //函数通过已知的设备号first来注册字符设备区域。 int alloc_chrdev_region( dev_t *dev, unsigned int…

数字后端——时钟树综合

在数字集成电路设计中&#xff0c;时钟信号是数据传输的基准&#xff0c;它对于同步数字系统的功能、性能和稳定性起决定性作用&#xff0c;所以时钟信号的特性及其分配网络尤被人们关注。时钟信号通常是整个芯片中有最大扇出、通过最长距离、以最高速度运行的信号。时钟信号必…

52次课(mysql用户管理、常用sql语句、 mysql数据库备份恢复)

MySQL创建用户以及授权 默认用户是root用户&#xff0c;不可能所有人员都用root用户&#xff0c;创建用户防止误删除&#xff0c;因为mysql里边有多个库每个库里有很多表&#xff0c;所以需要给单独的用户做一些授权我只需要它对某一个数据库有权限&#xff0c;或者说对某个数据…

线程池的种类,区别和使用场景

newCachedThreadPool&#xff1a; 底层&#xff1a;返回ThreadPoolExecutor实例&#xff0c;corePoolSize为0&#xff1b;maximumPoolSize为Integer.MAX_VALUE&#xff1b;keepAliveTime为60L&#xff1b;unit为TimeUnit.SECONDS&#xff1b;workQueue为SynchronousQueue(同步队…

20145225 《信息安全系统设计基础》第14周学习总结

第九章 虚拟存储器 虚拟存储器是计算机系统最重要的概念之一&#xff0c;它是对主存的一个抽象 三个重要能力&#xff1a; 它将主存看成是一个存储在磁盘上的地址空间的高速缓存&#xff0c;在主存中只保存活动区域&#xff0c;并根据需要在磁盘和主存之间来回传送数据&#xf…

数字后端——布线

布线是继布局和时钟树综合之后的重要物理实施任务&#xff0c;其内容是将分布在芯片核内的模块、标准单元和输入输出接口单元( I /O pad&#xff09;按逻辑关系进行互连&#xff0c;其要求是百分之百地完成它们之间的所有逻辑信号的互连&#xff0c;并为满足各种约束条件进行优…

动态加载和静态加载及其编译步骤

在类unix操作系统中&#xff0c;驱动加载方式一般分为&#xff1a;动态加载和静态加载&#xff0c;下面分别对其详细论述。 一、动态加载 动态加载是将驱动模块加载到内核中&#xff0c;而不能放入/lib/modules/下。 在2.4内核中&#xff0c;加载驱动命令为&#xff1a;ins…

streamsets 集成 minio s3测试

具体streamsets crate 集成可以参考 streamsets crate 以下文档只关注minio 集成的配置 minio 服务 搭建 具体搭建参考&#xff1a; https://www.cnblogs.com/rongfengliang/p/9197315.html 创建bucket &#xff08;crate 集成使用&#xff09; 测试的csv 文件从https://www.s…

sqlite性能优化

1、数据库性能上 1.1 批量事务插入&#xff0c;提升数据插入的性能 由于sqlite默认每次插入都是事务&#xff0c;需要对文件进行读写&#xff0c;那么减少事务次数就能简书磁盘读写次数从而获得性能提升。 1.2 单条sql优于多条sql 实测发现&#xff0c;对于几十条sql插入当你替…

【codecombat】 试玩全攻略 第十四关 已知敌人

第十四关 已知敌人 在这一关里&#xff0c;我们的英雄获得了一副可以看见敌人的眼镜&#xff0c;所以他很强势的学会了“发现敌人”的技能。 hero.findNearestEnemy()命令&#xff0c;单词多了&#xff0c;首字母都要大写了&#xff0c;不然分不出来。玩过wow的小伙伴用过 宏命…

数字后端——信号完整性分析

随着光刻和集成电路制造工艺的不断进步&#xff0c;以及芯片的特征尺寸从深亚微米到纳米的迅速采用&#xff0c;人们一方面因为芯片的功能极大提高而受益&#xff0c;另一方面&#xff0c;当逻辑门的沟道长度减小时&#xff0c;门的开关时间会减小&#xff0c;这意味着输出驱动…

新浪前端面试

1、什么是Html语义化&#xff1f; 语义化 div > section&#xff0c;div > nav(语言自己能解释)&#xff0c; input/(关闭符号) br/相对于样式标记&#xff0c;如 i&#xff08;样式&#xff09;/ em&#xff08;语义&#xff09;&#xff1b;b&#xff08;样式&#xff…

poj3278 【BFS】

Catch That CowTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 97240 Accepted: 30519Description Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a point N (0 ≤ N ≤ 100,000) on a num…

表单高级

● 表单高级 ○ 表单字段集<fieldset></fieldset> ■ 功能&#xff1a;相当于一个方框&#xff0c;在字段集中可以包含文本和其他元素。该元素用于对表单中的元素进行分组并在文档中区别标出文本。fieldset元素可以嵌套&#xff0c;在其内部可以在设置多个fieldset…

CMOS图像传感器——TDI CIS

一、面阵与线阵图像传感器 人们在日常生活中见到的相机大多基于普通的面阵图像传感器,这种相机多用来拍摄静止的物体。即使用它们來拍摄运动的物体,也仅仅是缩短了相邻两次拍摄的时间间隔,无需对所拍摄图像进行额外操作,对物体的运动方向和速度也没有限定条件。 除此之外,…

gpio_request 原形代码

其原型为 int gpio_request(unsigned gpio, const char *label) 先说说其参数&#xff0c;gpio则为你要申请的哪一个管脚&#xff0c;label则是为其取一个名字。其具体实现如下&#xff1a; [cpp] view plaincopyprint?int gpio_request(unsigned gpio, const char *label) …

【noip模拟】德充符

时间限制&#xff1a;2s 内存限制&#xff1a;512MB 【题目描述】 申徒嘉和郑子产都是伯昏无人的学生&#xff0c;子产因为申徒嘉是残疾人&#xff0c;非常看不起他&#xff0c;于是想要刁难他。 子产给了申徒嘉 n个数 a1,a2...an。 现在他要求申徒嘉重新排列这些数&#xff0c…

做好数据挖掘模型的9条经验总结

爱数据学习社 welcome数据挖掘是利用业务知识从数据中发现和解释知识(或称为模式)的过程&#xff0c;这种知识是以自然或者人工形式创造的新知识。当前的数据挖掘形式&#xff0c;是在20世纪90年代实践领域诞生的&#xff0c;是在集成数据挖掘算法平台发展的支撑下适合商业分析…

json及JavaBean转json

先来看看JSON&#xff1a; 什么是JSON&#xff1a; JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 JSON是用字符串来表示Javascript对象&#xff0c;例如可以在Servlet中发送一个JSON格式的字符串给客户端Javascript&#xff0c;Javascript可以执行这个字符串…