Python——函数入门(二)

一、函数的参数

我们在定义函数时,可以定义形式参数(简称形参),这些形参的值在函数调用的时候才会确定,形参的值由调用者负责传入。

1、关键字参数

在Python中,函数的参数名并不是没有意义的,在调用函数的时候,Python允许根据参数名传入参数值,根据参数名传入参数值不需要遵守定义形参的顺序,这种根据参数名传入参数值的方式被称为关键字参数。

例:

def test(a,b,c):
	print (‘a:%s,b:%s,c:%s‘%(a,b,c))
	return a,b,c

test(c = 1,a = 2,b =3)
# 运行结果:
# a:2,b:3,c:1
# (2, 3, 1)

test(1,2,3)# 运行结果:# a:1,b:2,c:3# (1, 2, 3)

# 位置参数与关键字参数混合使用,位置参数必须要在关键字参数前,而关键字参数后面只能是关键字参数,否则将会报错test(1,b = 2 ,3)# SyntaxError: positional argument follows keyword argument

2、参数默认值

我们可以在定义函数时,为一个或多个形参传入默认值,当函数被调用时,就不需要再为该形参传值。

例:

# 定义函数时,位置参数必须在关键字参数前面
def return_number(a = 1,b = 2,c):
	return a,b,c

# 报错 SyntaxError: non-default argument follows default argument

def return_number(a,b = 2,c = 3):
	return a,b,c

return_number(1)
# 返回 (1, 2, 3)

3、个数可变的参数

当我们定义一个函数时,形参个数是可变的,这时候我们可在形参前添加一个星号(*),这样多个参数值就会被当成元组传入,Python一个函数最多只能带一个支持“普通”参数收集的参数和一个支持关键字参数收集的参数(形参前添加两个星号)。

“普通”参数收集参数,例:

def show_book(name,*books):
	book_list = list(books)
	print (‘%s发书啦!发放书列表:%s‘%(name,book_list))

show_book(‘小明‘,‘语文‘,‘数学‘,‘英语‘)
# 打印 小明发书啦!发放书列表:[‘语文‘, ‘数学‘, ‘英语‘]

# def receive_book(*name,book): for i in name:  print (‘%s领取了%s!‘%(i,book))

receive_book(‘小明‘,‘小红‘,‘小蓝‘,book = ‘英语‘)# 打印 # 小明领取了英语!# 小红领取了英语!# 小蓝领取了英语!

关键字参数收集参数,会被收集成字典传入,例:

def receive_book(issue,**receive):
	for name,book in receive.items():
		print (‘%s发放书籍,%s领取了%s书‘%(issue,name,book))

receive_book(‘老王‘,小明 = ‘语文‘,小红 = ‘英语‘,小黑 = ‘数学‘)
# 打印
# 老王发放书籍,小明领取了语文书
# 老王发放书籍,小红领取了英语书
# 老王发放书籍,小黑领取了数学书

“普通”参数收集形参和关键字参数收集参数混合使用,例:

def receive_book(*issue,**receive):
	for name,book in receive.items():
		for i in issue:
			print (‘%s发放书籍,%s领取了%s书‘%(i,name,book))

receive_book(‘老王‘,‘老吴‘,‘老洪‘,小明 = ‘语文‘,小红 = ‘英语‘,小黑 = ‘数学‘)
# 打印
# 老王发放书籍,小明领取了语文书
# 老吴发放书籍,小明领取了语文书
# 老洪发放书籍,小明领取了语文书
# 老王发放书籍,小红领取了英语书
# 老吴发放书籍,小红领取了英语书
# 老洪发放书籍,小红领取了英语书
# 老王发放书籍,小黑领取了数学书
# 老吴发放书籍,小黑领取了数学书
# 老洪发放书籍,小黑领取了数学书

4、逆向参数收集

逆向参数收集,指在程序已有的列表、元组、字典等对象的前提下,把他们的元素‘拆开’后传给函数的参数,逆向收集需要在传入的列表、元组参数之前加一个星号,字典需要在参数之前加两个星号。

传入列表、元组,例:

def show(one,*nums):
	print (‘one = %s‘%one)
	print (‘nums = ‘,nums)
# 传入列表
num = [2,3,4]
# 使用逆向参数收集
show(1,*num)
# 打印
# one = 1
# nums =  (2, 3, 4)

show(1,num)
# 打印
# one = 1
# nums =  ([2, 3, 4],)

# 传入元组n = (2,3,4)# 使用逆向参数收集show(1,*n)# 打印# one = 1# nums =  (2, 3, 4)

show(1,n)# 打印# one = 1# nums =  ((2, 3, 4),)

传入字典,例:

def receive_book(issue,name,book):
	print (‘%s发放书籍,%s领取了%s书‘%(issue,name,book))

my_dict = dict(issue = ‘老王‘,name = ‘小熊‘,book = ‘英文‘)
receive_book(**my_dict)
# 打印
# 老王发放书籍,小熊领取了英文书

同时传入字典、列表,例:

def receive_book(*issue,name,book):
	for i in issue:
		print (‘%s发放书籍,%s领取了%s书‘%(i,name,book))

my_dict = dict(name = ‘小熊‘,book = ‘英文‘)
issue_list = [‘老王‘,‘老吴‘]
receive_book(*issue_list,**my_dict)
# 打印
# 老王发放书籍,小熊领取了英文书
# 老吴发放书籍,小熊领取了英文书

原文地址:https://www.cnblogs.com/mingmingming/p/11073621.html

时间: 2024-10-30 08:46:23

Python——函数入门(二)的相关文章

转 Python爬虫入门二之爬虫基础了解

静觅 » Python爬虫入门二之爬虫基础了解 2.浏览网页的过程 在用户浏览网页的过程中,我们可能会看到许多好看的图片,比如 http://image.baidu.com/ ,我们会看到几张的图片以及百度搜索框,这个过程其实就是用户输入网址之后,经过DNS服务器,找到服务器主机,向服务器发出一个请求,服务器经过解析之后,发送给用户的浏览器 HTML.JS.CSS 等文件,浏览器解析出来,用户便可以看到形形色色的图片了. 因此,用户看到的网页实质是由 HTML 代码构成的,爬虫爬来的便是这些内容

Python 爬虫入门(二)——爬取妹子图

Python 爬虫入门 听说你写代码没动力?本文就给你动力,爬取妹子图.如果这也没动力那就没救了. GitHub 地址: https://github.com/injetlee/Python/blob/master/%E7%88%AC%E8%99%AB%E9%9B%86%E5%90%88/meizitu.py 公众号:[智能制造专栏].欢迎关注,分享智能制造与编程那些事. 爬虫成果 当你运行代码后,文件夹就会越来越多,如果爬完的话会有2000多个文件夹,20000多张图片.不过会很耗时间,可以在

《转》Python学习(19)-python函数(二)-关于lambda

转自http://www.cnblogs.com/BeginMan/p/3178103.html 一.lambda函数 1.lambda函数基础: lambda函数也叫匿名函数,即,函数没有具体的名称,而用def创建的方法是有名称的.如下: """命名的foo函数""" def foo():return 'beginman' #Python中单行参数可以和标题写在一行 """lambda关键字创建匿名函数,该表达式同

Python函数初识二

一.变量的作用域LEGB 1.1.变量的作用域 在Python中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的.变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称. 在Python程序中创建.改变.查找变量名时,都是在一个保存变量名的空间中进行,我们称之为命名空间,也被称之为作用域.python的作用域是静态的,在源代码中变量名被赋值的位置决定了该变量能被访问的范围.即Python变量的作用域由变量所在源代码中的位置决定. 1.2.变量作用域的产生 在Py

Python基础入门 (二)

在上次课程中简要的讲述了Python的基础常识,现在来详细的学习一下吧! 一.类和对象 面向过程和面向对象 面向过程:C 面向对象:Java.Python等 类和对象的含义: 类,是对事物的抽象,比如:车 对象,是类的一个实例,比如:别克 类和对象的关系: 类是对象的定义,而实例是真正的事物,它存放了类中所定义的对象的具体信息: 对象的创建,也就是类的实例化. 对于Python,一切事物都是对象,对象基于类的创建. 具体实例讲解 右边的两个对象是基于左边的字符串类创建的,而两个字符串同时具有了字

python函数(二)

#名字空间:存放名字与值的绑定关系 #名称空间分为三种 #内置名称空间:python解释器自带的名字,python解释器启动就会生成 #全局名称空间:文件级别定义的名字都会存放与全局名称空间,执行python文件时会产生 #局部名称空间:定义在函数内部的名字,局部名称空间只有在调用函数时才会生效,函数调用结束则失效 #三者的加载顺序:内置名称空间->全局名称空间->局部名称空间 #取值:局部名称空间->全局名称空间->内置名称空间 #闭包函数:函数内部定义函数,成为内部函数,#该内

Python 学习笔记(十三)Python函数(二)

参数和变量 1 >>> def foo(a,b): #函数是一个对象 2 return a+b 3 4 >>> p =foo #对象赋值语句.将foo函数赋值给p这个变量 5 >>> foo(4,5) 6 9 7 >>> p(4,5) 变量p就指向了foo这个函数 8 9 9 >>> 按引用传递参数 按照顺序进行赋值,函数中的变量a就指向了x,x是第一个实参,a这个参数指向了x所引用的对象,并不是把3这个数复制一个放

Python爬虫入门二之爬虫基础了解

1.什么是爬虫 爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来.想抓取什么?这个由你来控制它咯. 比如它在抓取一个网页,在这个网中他发现了一条道路,其实就是指向网页的超链接,那么它就可以爬到另一张网上来获取数据.这样,整个连在一起的大网对这之蜘蛛来说触手可及,分分钟爬下来不是事儿. 2.浏览网页的过程 在用户浏览网页的过程中,我们可能会看到许多好看的图片,比如 http://image.bai

Python函数(十二)-迭代器

字符串,列表,元组,字典,集合,生成器这些能通过for循环来遍历的数据类型都是可迭代对象 可通过isinstance判断是不是可迭代对象 >>> from collections import Iterable >>> isinstance('Python', Iterable) True >>> isinstance([1,2,3], Iterable) True >>> isinstance((1,2,3), Iterable)