python函数1_参数,返回值和嵌套
函数
将重复的代码,封装到函数,只要使用直接找函数
函数可以增强代码的模块化和提高代码的重复利用率
函数的定义和调用
格式
def 函数名([参数,参数...]):
函数体
定义函数
import random
def generate_random():
for i in range(10):
ran = random.randint(1,20)
print(ran,end=',')
调用函数
generate_random()
输出
3,13,6,3,11,16,9,1,10,19,
参数
普通参数
指定随机数的数量
import random
def generate_random(n1):
for i in range(n1):
ran = random.randint(1,20)
print(ran,end=',')
generate_random(6)
函数中的n1叫做形参,形式上参数,占位
调用时的6叫做实参,实际的参数,具体的值
传入三个数,求和
def sums(n1,n2,n3):
print(n1+n2+n3)
sums(1,2,4)
定义一个登录函数
参数是username,password
函数体:
判断参数传过来的username,password是否正确,
如果正确则登录成功,否则打印登录失败
def login(username,password):
# 相当于数据库注册的用户名和密码
uname = 'admin1'
pword = '112233'
for i in range(2):
if username == uname and password == pword:
print('登录成功')
break
else:
print('登录失败')
username = input('输入用户名: ')
password = input('输入密码: ')
else:
print('账户锁定')
# 调用
username = input('输入用户名: ')
password = input('输入密码: ')
login(username,password)
输入用户名: admin
输入密码: 112233
登录失败
输入用户名: admin
输入密码: 112233
登录失败
输入用户名: admin
输入密码: 112233
账户锁定
找出列表的最大值
def maxs(iterable):
max = iterable[0]
for i in iterable:
if i > max:
max = i
print('最大值是: ',max)
list1 = [4,1,4,3,8,9]
maxs(list1)
tuple1 = (1,2,3,5,3,2,5)
maxs(tuple1)
最大值是: 9
最大值是: 5
列表排序
isinstance()
判断是不是什么类型
isinstance(变量,类型关键字)
def sort1(iterable):
if isinstance(iterable,list):
for i in range(len(iterable)-1):
for j in range(len(iterable)-1-i):
if iterable[j] > iterable[j+1]:
iterable[j],iterable[j+1] = iterable[j+1],iterable[j]
print(iterable)
else:
print('请使用列表')
list1 = [11,1,2,5,8,7,5,8]
sort1(list1)
[1, 2, 5, 5, 7, 8, 8, 11]
默认值+关键字
def add(a,b=10,c=20):
print(a,b,c)
add(1)
add(1,2)
add(1,c=2)
1 10 20
1 2 20
1 10 2
可变参数
单个*号
函数调用时,实参的个数可以没有,也可以多个
单独使用
def add(*args):
sum = 0
if len(args) > 0:
for i in args:
sum += i
print('累加和是:',sum)
else:
print('没有元素可计算')
add()
add(1)
add(1,2,3,4)
没有元素可计算
累加和是: 1
累加和是: 10
和普通参数使用
当传参数量少于两个时,会报错
def add(name,age,*args):
sum = 0
if len(args) > 0:
for i in args:
sum += i
print(name,'累加和是:',sum)
else:
print('没有元素可计算')
add('tom',1)
add('tom',1,2)
add('tom',1,2,3,4)
没有元素可计算
tom 累加和是: 2
tom 累加和是: 9
列表
def funcs(name, *args):
if len(args) > 0:
for i in args:
print('{}学习了{}'.format(name,i))
else:
print('{}没有学过数据库知识'.format(name))
lists = ['oracle','mysql','redis','mongodb']
funcs('tom',lists)
tom学习了['oracle', 'mysql', 'redis', 'mongodb']
发现将列表作为了一个整体,这显然不是我们想要的结果
funcs('tom',*lists)
tom学习了oracle
tom学习了mysql
tom学习了redis
tom学习了mongodb
在调用时,*会将lists拆包为oracle等单个元素
*args参数接收时会将接收的元素,进行装包,放到一个元组中
两个*号
def func(**kwargs):
print(kwargs)
func()
func(a=1,b=2,c=3)
{}
{'a': 1, 'b': 2, 'c': 3}
当使用两个星时,函数默认会使用字典来存储传的值
所以调用时,传的值需要成对出现key=value
字典
def func(**kwargs):
print(kwargs)
dict1 = {'001':'python','002':'java','003':'c','004':'go'}
func(**dict1)
{'001': 'python', '002': 'java', '003': 'c', '004': 'go'}
当在字典前面加两个星时,
会对字典进行拆包,拆包为:'001':'python','002':'java'...
函数接收时,形参kwargs前面有两个星号,会准备字典,进行装包
遍历字典
def p_boy(name,**persons):
print('{}喜欢的小鲜肉是: '.format(name))
if isinstance(persons,dict):
for names,age in persons.values():
print('{}的年龄是{}'.format(names,age))
dict1 = {'01':('蔡徐坤',21),'02':('王源',20),'03':('易烊千玺',19)}
p_boy('tom',**dict1)
tom喜欢的小鲜肉是:
蔡徐坤的年龄是21
王源的年龄是20
易烊千玺的年龄是19
返回值
函数中通过return关键字来返回信息
当要使用return返回的内容时,必须使用变量去承接
def add(a,b):
result = a + b
print(result)
return a * b
x = add(2,4)
print(x)
6
8
当return后面跟多个值
底层会会把这些值先放到元组中,赋值时,作为一个整体给x赋值
def add(a,b):
result = a + b
print(result)
return a * b,a - b,a + b
x = add(2,4)
print(x)
6
(8, -2, 6)
当返回值为多个时,也可以使用多个变量来承接,会分别赋值
def add(a,b):
result = a + b
print(result)
return a * b,a - b,a + b
x,y,z = add(2,4)
print(x,y,z)
6
8 -2 6
嵌套函数
def a():
print('AAA')
def b():
a()
print('BBB')
def c():
b()
print('CCC')
c()
AAA
BBB
CCC
登录验证函数
import random
定义验证码函数
def generate_checkcode(n):
s = '1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'
code = ''
for i in range(n):
ran = random.randint(0,len(s)-1)
code += s[ran]
return code
定义登录函数
def login():
username = input('输入用户名: ')
password = input('输入密码: ')
# 得到验证码
code = generate_checkcode(5)
print('验证码是:',code)
code1 = input('请输入验证码: ')
# 验证
if code.lower() == code1.lower():
if username == 'lijiaqi' and password == '123456':
print('用户登录成功')
else:
print('用户名或者密码有误')
else:
print('验证码有误')
调用
login()
输入用户名: lijiaqi
输入密码: 12345
验证码是: uWK8V
请输入验证码: uwk8v
用户名或者密码有误
输入用户名: lijiaqi
输入密码: 123456
验证码是: 9MlCb
请输入验证码: 9mlcb
用户登录成功
python函数1_参数,返回值和嵌套的更多相关文章
- python函数基础-参数-返回值-注释-01
什么是函数 函数就是有特定功能的工具 # python中有内置函数(python解释器预先封装好的)与自定义函数(用户自定义封装的)之分 为什么要用函数 # 可以减少代码冗余,增加代码复用性 # 使代 ...
- python函数2(返回值、传递列表...)
python函数2(返回值.传递列表...) 1.返回值 1.1.返回简单的值 #返回简单值 def get_formatted_name(first_name,last_name): "& ...
- 9 - Python函数定义-位置参数-返回值
目录 1 函数介绍 1.1 为什么要使用函数 1.2 Python中的函数 2 函数的基本使用 3 函数的参数 3.1 参数的默认值 3.2 可变参数 3.2.1 可变位置传参 3.2.2 可变关键字 ...
- Python函数变量和返回值
Python函数的全局变量和局部变量 1.不同的编程语言,程序可以分为函数和过程两大类,函数具有具体返回值,而过程则不具有具体的返回值,python只具有函数,因为对于它的一般函数,其返回值为所具体返 ...
- Python函数(一)-return返回值
定义一个函数可以在最后加上return返回值,方便查看函数是否运行完成和返回函数的值 # -*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR&qu ...
- python开发初识函数:函数定义,返回值,参数
一,函数的定义 1,函数mylen叫做函数名 #函数名 #必须由字母下划线数字组成,不能是关键字,不能是数字开头 #函数名还是要有一定的意义能够简单说明函数的功能 2,def是关键字 (define) ...
- 深入理解python中函数传递参数是值传递还是引用传递
深入理解python中函数传递参数是值传递还是引用传递 目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是"传对象引用 ...
- Java调用Python脚本并获取返回值
在Java程序中有时需要调用Python的程序,这时可以使用一般的PyFunction来调用python的函数并获得返回值,但是采用这种方法有可能出现一些莫名其妙的错误,比如ImportError.在 ...
- Python函数及参数
## 函数 - 函数是代码的一种组织形式,一般一个函数完成一个特定功能 - 函数需要先定义后使用 - 函数的定义 def func_name(参数): func_body ... return fun ...
随机推荐
- Java基础小知识(一)
序言:“不积跬步,无以至千里.不积小流,无以成江海.”每一个庞大的知识架构都是由无数个小知识点慢慢积累起来的,没有量变的积累,就没有质变上的飞跃,成功往往离不开积累. 今天就和大家分享一些我在学习J ...
- Python MonkeyRunner 连接设备总是返回连接成功问题
device = mr.waitForConnection(1,deviceName) 当使用waitForConnection时,不管设备是否连接,device总是返回一个对象,所以没有办法通过 i ...
- usage: git remote add [<options>] <name> <url> -f, --fetch fetch the remote branches --tags import all tags and associated objects when fetching
按照git官网提示输入 git pushgit remote add origin git@github.com:***3 / elm-1.git -u 链接git远程仓库 出现错误 usage: g ...
- 伪数组变数组 js
语法糖:简单的说:用语法糖就是把复杂(有助于让我们理解代码含义)的代码,让我们可以简单的敲出来.这种语法对语言本身功能来说没有什么影响,只是为了方便程序员的开发,提高开发效率 方法一: var a=d ...
- 洛谷 1219:八皇后 (位运算 & DFS)
题目链接: https://www.luogu.org/problem/show?pid=1219#sub row:受上面的皇后通过列控制的位置 ld:受上面的皇后通过从右至左的斜对角线控制的位置 r ...
- 题解【CodeForces1154A】Restoring Three Numbers
Description Polycarp has guessed three positive integers \(a\), \(b\) and \(c\). He keeps these numb ...
- Linux中通配符
通配符是由shell处理的, 它只会出现在 命令的“参数”里.当shell在“参数”中遇到了通配符时,shell会将其当作路径或文件名去在磁盘上搜寻可能的匹配:若符合要求的匹配存在,则进行代换(路径扩 ...
- url中的参数加密
有时候我们需要在地址栏传输一些信息,比如查询数据的时候,传一个参数location.href = "/admin/extract?name="+"参数aaa"’ ...
- Hibernate:HIbernate配置详解-HelloWorld
hibernate介绍: Hibernate是一个开源的对象关系映射框架,它对JDBC进行了轻量级的对象封装,使Java程序员可以随心所欲的使用对象编程思维来操纵数据库. 它不仅提供了从java类到数 ...
- codeforces Make The Fence Great Again(dp)
题目链接:http://codeforces.com/contest/1221/problem/D 题目要求ai ! = ai-1,草纸上推理一下可以发现每一个栅栏可以升高的高度无非就是 +0,+1, ...