Python中的函数(4)
一、传递列表
你经常会发现,向函数传递列表很有用,这种列表包含的可能是名字、数字或者更复杂的对象(如字典)。
将列表传递给函数后,函数就能直接访问其内容。
栗子:假设有一个用户列表,我们要和其中每一位用户打招呼。如何用代码实现,可以看下面的代码:
def greet_users(names):
"""给列表中的每位用户打招呼"""
for name in names:
msg = "Hello, " + name.title() + " !"
print(msg) usernames = ['joe','jasy','nacy']
greet_users(usernames)
console:

解释:我们将greet_users 定义成一个接受一个名字列表,并将其存储在形参names中,这个函数遍历收到的列表,
并对其中的每位用户都打印一条问候语句。在line 7,我们定义了一个名字列表 usernames,然后调用greet_users(),
并将这个列表传递给它。输出的信息也完全符合我们的预期,每位用户都看到了一条问候语句,每当你想问候一组用
户时就可以调用这个函数。
二、在函数中修改列表
在将列表传递给函数后,函数就可以对其进行修改。在函数中 对这个列表的修改是永久性的,这让你能够高效地处理
大量的数据。
栗子:假如有一些用户已注册某网站但未验证,我们需要将他们全部验证,验证过的用户则会从未验证的列表中删除加入
已验证的列表中。如下:
def print_username(unverify_users,verify_users):
"""模拟打印每个已验证的用户"""
while unverify_users :
current_user = unverify_users.pop() # 模拟打印验证用户过程
print("Verifing user : " + current_user)
verify_users.append(current_user) def show_verify_users(verify_users):
"""打印类表中所有的用户"""
for username in verify_users:
print(username) unv_users = ['joe','jhson','nacy']
v_users = [] print_username(unv_users,v_users)
show_verify_users(v_users)
console:

解释:我们创建了两个列表,一个是未验证的用户列表,里面有三个用户,一个是已验证用户列表,此时是没有用户的,
我们也定义了两个函数:一个功能是模拟打印每个已验证用户,一个是打印列表中的所有用户。可以看到已验证用户列表
从最开始的没有用户到之后的拥有三个用户,可以看出函数中确实可以改变列表。这个例子也表达了一种编程的理念:
每个函数都应只负责一项具体的工作。
三、禁止函数修改列表
有时候,需要禁止函数修改列表。假如之前的栗子中,我们在验证用户之后,未验证用户列表会变为空列表(上面的代
码中未打印,可以自己尝试),而我们还需要用到开始未验证的用户列表,以供备案。为了解决这个问题,我们可以向
函数传递一个列表的副本,如下:
def print_username(unverify_users,verify_users):
"""模拟打印每个已验证的用户"""
while unverify_users :
current_user = unverify_users.pop() # 模拟打印验证用户过程
print("Verifing user : " + current_user)
verify_users.append(current_user) def show_users(verify_users):
"""打印所有已验证的用户"""
for username in verify_users:
print(username) unv_users = ['joe','jhson','nacy']
v_users = [] print_username(unv_users[:],v_users)
show_users(v_users)
show_users(unv_users)
console:

可以看到效果是一样的,已验证用户列表中也已经添加了那三个通过验证的用户,而且之前的未验证用户列表中也是有值的,
这样我们就可以继续使用它了。
-- The End --
黑夜给了你黑色的眼睛,你却用它来翻白眼。
Python中的函数(4)的更多相关文章
- Python中split()函数的用法及实际使用示例
Python中split()函数,通常用于将字符串切片并转换为列表. 一.函数说明: split():语法:str.split(str="",num=string.count(st ...
- Python中利用函数装饰器实现备忘功能
Python中利用函数装饰器实现备忘功能 这篇文章主要介绍了Python中利用函数装饰器实现备忘功能,同时还降到了利用装饰器来检查函数的递归.确保参数传递的正确,需要的朋友可以参考下 " ...
- python中range()函数的用法
python中range()函数可创建一个整数列表,一般用在for循环中. range()函数语法: range(start,stop[,step]) 参数说明: star: 计数从star开始.默认 ...
- Python 中的函数
学了 Python 中的数据类型,语句,接下来就来说一下 Python 中的函数,函数是结构化编程的核心.我们使用函数可以增加程序的可读性.自定义函数时使用关键字def 函数由多条语句组成.在定义函数 ...
- python中format函数
python中format函数用于字符串的格式化 通过关键字 1 print('{名字}今天{动作}'.format(名字='陈某某',动作='拍视频'))#通过关键字 2 grade = {'nam ...
- Python中readline()函数 去除换行符
从Python中readline()函数读取的一行内容中含有换行符\n,很多时候我们需要处理不含有换行符的字符串,此时就要去掉换行符\n. 方法是使用strip()函数. 例子如下: f = open ...
- Python中int()函数的用法浅析
int()是Python的一个内部函数 Python系统帮助里面是这么说的 >>> help(int) Help on class int in module __builti ...
- 【313】python 中 print 函数用法总结
参考:python 中 print 函数用法总结 参考:Python print() 函数(菜鸟教程) 参考:Python 3 print 函数用法总结 目录: 字符串和数值类型 变量 格式化输出 p ...
- python中filter函数
python中filter()函数 filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断 ...
- Python中print()函数不换行的方法
一.让print()函数不换行 在Python中,print()函数默认是换行的.但是,在很多情况下,我们需要不换行的输出(比如在算法竞赛中).那么,在Python中如何做到这一点呢? 其实很简单.只 ...
随机推荐
- 害死人不偿命的(3n+1)猜想 (15)
#include <iostream> #include <algorithm> using namespace std; int main(){ int n; while ( ...
- 用JS改变页面中b标签的样式啊 样式的等
用JS改变页面中b标签的样式啊 样式的等 ,实际上是在标签内加上样式 ,用媒体查询的话 ,不能生效 <!DOCTYPE html> <html lang="en&qu ...
- 洛谷 P1199 三国游戏
参考:Solution_ID:17 题解 更新时间: 2016-11-13 21:01 这道题要求最后得到的两方的默契值最大的武将,小涵的默契值大于计算机,首先,我们这个解法获胜的思路是,每个武将对应 ...
- 优先队列 HDOJ 5437 Alisha's Party
题目传送门 题意:一人过生日,很多人排着队送礼物.排队顺序是礼物价值大的优先,如果相等先来的优先.有m次开门,当t个人到了会开门让p个人进门.最后一次让门外的所有人按顺序进门.有q次询问,问第x个进门 ...
- 字符串处理 Codeforces Round #305 (Div. 2) A. Mike and Fax
题目传送门 /* 字符串处理:回文串是串联的,一个一个判断 */ #include <cstdio> #include <cstring> #include <iostr ...
- ui自动化测试的意义与理解
分层测试的思想 分层测试(有的也叫测试金字塔)是最近几年慢慢流行.火热起来的,也逐渐得到了大家的认可,大家应该已经比较熟悉分层测试的思想了,不太了解的可以自行找一些相应的渠道去补充一下上下文的知识. ...
- 146 LRU Cache 最近最少使用页面置换算法
设计和实现一个 LRU(最近最少使用)缓存 数据结构,使它应该支持以下操作: get 和 put .get(key) - 如果密钥存在于缓存中,则获取密钥的值(总是正数),否则返回 -1.put(k ...
- [在读]Nodejs实战
书到手的时候其实就已经过时,Express更新太快,因而书中的例子实践起来会有很多阻碍. 目前搁置状态.
- sleep与wait的对比
链接:https://www.nowcoder.com/questionTerminal/eeff0fdb43034ee7b43838fb9de4519e来源:牛客网 sleep是线程类(Thread ...
- jquery 根据文内内容获取dom
$("table tr td:contains(5)")