python笔记六(函数的参数、返回值)
一 调用函数
在写函数之前,我们先尝试调用现有的函数
>>> abs(-9)
9
除此之外,还有我们之前使用的len()等。可以用于数据类型转换的 int() float() str() bool()等函数。还有一些可以直接只用的内置函数等。
二、函数名称、参数、返回值
在写函数的时候,只需要定义定义函数的名称,参数即可,不必和java一样,定义返回值的类型,且在写参数的时候,不用指定参数的类型;
return 返回值也更加奔放,可以返回任意类型的数据;例如 数值,列表,字典,甚至是函数。
>>> def out_list(a,b):
... l = []
... l.append(a)
... l.append(b)
... return l
...
>>> m = out_list(1,2)
>>> type(m)
<class 'list'>
参数详解:位置参数/默认参数/可变参数/关键字参数/参数组合
位置参数
如上例中,调用out_list(1,2)我们默认的就把1和2的位置对应于a和b,也相当于out_list(a=1,b=2)
默认参数
默认参数我们可以理解为一个公共的参数值,在调用的时候这个值都是固定的,当然我们也可以对其进行修改
>>> def student(name,age,city):
... print(name)
... print(age)
... print(city)
 >>> student("nadech",22,"NANJIGN")
 nadech
22
NANJIGN
以上例子中,如果要调用函数的student都来自NANJING,那么我们就可以把这个参数设置为默认参数。
>>> def student(name,age,city="NANJING"):
... print(name)
... print(age)
... print(city)
...
>>> student("nadech",22)
nadech
22
NANJING
但是在使用默认参数的时候要注意,默认参数必须指向不可变对象。
>>> def enroll(l=[]):
... l.append("END")
... return l
...
>>> enroll()
['END']
>>> enroll()
['END', 'END']
>>> enroll()
['END', 'END', 'END']
可变参数 *args 顾名思义,就是参数的个数可以改变
def cacutlate (*args):
sum = 0
for i in args:
sum+=i*i
print(sum)
# 直接输入多个参数
cacutlate(1,2,3) # 直接把列表传入,这样就会把l列表中的元素挨个传入
l = [1,2,3,4]
cacutlate(*l)
关键字参数 **kwargs,使用时我们要与可变参数区分开来,可变参数是只传入参数本身,而关键字参数需要参数名称以及参数值,在函数内部会组装为字典
>>> def user(name,password,**kwargs):
... print("name:",name,"password:",password,"others:",kwargs)
...
>>> user("nadech",123)
name: nadech password: 123 others: {}
>>> user("nadech",123,date="12-12")
name: nadech password: 123 others: {'date': '12-12'}
 >>> info = {"date":"12-12","job":"student"}
 >>> user("nadech",123,**info)
 name: nadech password: 123 others: {'job': 'student', 'date': '12-12'}
关键字参数可以使我们来扩展函数的功能,例如用户在注册信息的时候,我们要求用户名和密码都是必须的,至于其他年龄,地址等则不是必要的,那么我们就可以在创建该函数的时候,使用关键字参数扩展需求。
如果进一步的,我们需要限制关键字参数的名称,也就是允许的关键字参数有所限制,例如只能出现在(年龄、住址、薪酬等)就需要使用命名关键字参数。
命名关键字参数
在命名关键字参数的时候有以下两种情况:
①参数列表中已经存在可变参数,也就是*args,那么我们就只需要在后边加上命名关键字的名称
# 命名关键字参数
def user(name,password,*args,age,address):
print("name:",name,"password:",password,args,age,address) user("nadech",123,"v1","v2","v3",age=22,address="NANJING")
②参数列表中不存在可变参数,需要用 *,来识别命名关键字参数
def user(name,password,*,age,address):
print("name:",name,"password:",password,age,address) user("nadech",123,age=22,address="NANJING")
参数组合
在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
def f1(a, b, c=0, *args, **kw): #位置参数/默认参数/可变参数/关键字参数
print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw) def f2(a, b, c=0, *, d, **kw): #位置参数/默认参数/命名关键字参数/关键字参数
print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)
python笔记六(函数的参数、返回值)的更多相关文章
- python函数基础-参数-返回值-注释-01
		
什么是函数 函数就是有特定功能的工具 # python中有内置函数(python解释器预先封装好的)与自定义函数(用户自定义封装的)之分 为什么要用函数 # 可以减少代码冗余,增加代码复用性 # 使代 ...
 - python函数1_参数,返回值和嵌套
		
函数 将重复的代码,封装到函数,只要使用直接找函数 函数可以增强代码的模块化和提高代码的重复利用率 函数的定义和调用 格式 def 函数名([参数,参数...]): 函数体 定义函数 import r ...
 - python开发初识函数:函数定义,返回值,参数
		
一,函数的定义 1,函数mylen叫做函数名 #函数名 #必须由字母下划线数字组成,不能是关键字,不能是数字开头 #函数名还是要有一定的意义能够简单说明函数的功能 2,def是关键字 (define) ...
 - 9 - Python函数定义-位置参数-返回值
		
目录 1 函数介绍 1.1 为什么要使用函数 1.2 Python中的函数 2 函数的基本使用 3 函数的参数 3.1 参数的默认值 3.2 可变参数 3.2.1 可变位置传参 3.2.2 可变关键字 ...
 - python函数2(返回值、传递列表...)
		
python函数2(返回值.传递列表...) 1.返回值 1.1.返回简单的值 #返回简单值 def get_formatted_name(first_name,last_name): "& ...
 - Python函数变量和返回值
		
Python函数的全局变量和局部变量 1.不同的编程语言,程序可以分为函数和过程两大类,函数具有具体返回值,而过程则不具有具体的返回值,python只具有函数,因为对于它的一般函数,其返回值为所具体返 ...
 - 深入理解python中函数传递参数是值传递还是引用传递
		
深入理解python中函数传递参数是值传递还是引用传递 目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是"传对象引用 ...
 - Python:笔记(2)——函数与模块
		
Python:笔记(2)——函数与模块 Python函数 关于函数 1.我们可以使用Help来查看函数的帮助信息 2.调用函数的时候,如果传入的参数数量或者类型不符合均会报错. 3.函数名其实就是一个 ...
 - Python入门篇-函数、参数及参数解构
		
Python入门篇-函数.参数及参数解构 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.函数概述 1>.函数的作用即分类 函数 数学定义:y=f(x) ,y是x的函数,x ...
 - SubSonic3.0使用存储过程查询时,不能使用output参数返回值的问题修改
		
有个群友问SubSonic3.0执行存储过程时能不能使用output参数返回值,说测试过后获取不到返回值,早上有些时间所以就尝试修改了一下 首先在数据库中创建一个存储过程 CREATE PROCEDU ...
 
随机推荐
- VMware虚拟机安装
			
学习Linux系统最好的方式就是在自己的虚拟机上安装Linux:接下来就给大家简单介绍一下VMware虚拟机的安装以及Linux的安装:VMware虚拟机只是为了更好的学习Linux: ...
 - 菜鸟容易中的招__setattr__
			
class Counter: def __init__(self): self.counter = 0 # 这里会触发 __setattr__ 调用 def __setattr__(self, nam ...
 - JEECG中出现Java.sql.SQLException: Value 'xxxx' can not be represented as java.sql.Timestamp的解决办法
			
出现`Java.sql.SQLException: Value 'xxxx' can not be represented as java.sql.Timestamp',其中xxxx部分对应包含一个看 ...
 - java集合详解
			
1.java集合框架的层次结构 Collection接口: Set接口: HashSet具体类 LinkedHashSet具体类 TreeSet具体类 List接口: ArrayList具体类 L ...
 - mysql zip 文件安装
			
1.下载 https://dev.mysql.com/downloads/mysql/ 2.解压,配置环境变量 MYSQL_HOME:D:\mysql path后面加 :%MYSQL_HOME%\bi ...
 - oracle11.2中分区功能测试之add&split partition对global&local index的影响
			
生产库中某些大表的分区异常,需要对现有表进行在线操作,以添加丢失分区,因为是生产库,还是谨慎点好,今天有空,针对add&split分区对global&local索引的影响进行了测试,测 ...
 - input和textarea标签的select()方法----选中文本框中的所有文本
			
JavaScript select()方法选中文本框中的所有文本 <input>和<textarea>两种文本框都支持select()方法,这个方法用于选择文本框中的所有文本 ...
 - ios开发-日期处理(类似朋友圈,微博等的发送时间)
			
ios开发中,我们经常要处理从服务器获取的时间.类似朋友圈,微博这些应用.我们经常可以看到“刚刚”,“31分钟前发表”,“昨天5点”,之类的字样. 当时我们从服务器端获取的都是那条朋友圈信息,或者微博 ...
 - java面试之String的理解(自我理解)
			
1.String是基本数据类型吗? 不是,是对象,引用数据类型 2.String是可变吗? 不可变,String是final类型的. 3.怎样比较两个字符串的值相同,怎样比较两个字符串是否为同一对象? ...
 - “百度杯”CTF比赛 九月场_YeserCMS
			
题目在i春秋ctf大本营 题目的提示并没有什么卵用,打开链接发现其实是easycms,百度可以查到许多通用漏洞 这里我利用的是无限报错注入 访问url/celive/live/header.php,直 ...