day11 函数
day11 函数
一、函数基础
"""
1 什么是函数
函数是盛放代码的容器:把实现某一功能的代码放到一个函数内就制造一个工具
2 为何要用函数
没有用函数之前程序的问题:
1、代码冗余、程序的可读性差
2、可拓展性差
3 如何用函数
函数-》实现某一功能的工具
函数定义-》事先准备工具的过程
函数调用-》遇到应用场景,拿来就用
函数的使用原则:先定义、后调用
"""
一 定义函数
语法
def 函数名(参数1,参数2,参数3,...):
"""函数注释"""
代码1
代码2
代码3
return 返回值
定义函数发生的事情:
(1)申请内存空间,把函数体代码存起来
(2)将函数的内存地址绑定函数名
def register():
inp_user = input("请输入您的账号:").strip()
inp_pwd = input("请输入您的密码:").strip()
inp_money = input("请充值:").strip()
with open('db.txt', mode='at', encoding='utf-8') as f:
f.write('%s:%s:%s\n' % (inp_user, inp_pwd, inp_money))
x = 10
print(x)
print(register)
二 调用:
(1) 根据函数名函数的内存地址
(2) 函数的内存地址()触发函数体代码的运行
register()
register()
register()
三 函数定义阶段:只检测语法不执行代码
def func():
print('hello1')
# print('hello2'
x
print('hello3')
func()
四 函数调用阶段:才会执行函数体代码
def foo():
print('from foo')
bar()
def bar():
print('from bar')
foo()
二、函数的定义与调用
函数定义三种形式
1、有参函数
def foo(x,y):
print(x,y)
foo(1,2)
2、无参函数
def foo():
print('hello')
foo()
3、空函数
def foo():
pass
# 储备知识:函数返回值
def max2(x,y):
if x > y:
return x
else:
return y
res = max2(10,20)
print(res * 12)
# 注意:函数体内可以有多个return,但是只要执行一次整个函数就会立即终止并且将其后之当做本次的结果返回
def foo():
print('hello1')
return 111
print('hello2')
return 2222
print('hello3')
return 3333
res = foo()
print(res)
# return有三种形式
1、return 值:返回一个值
2、return 值1,值2,值3:返回一个元组
3、没有return、return、return None:默认返回None
def foo():
# return 1,"aa",[1,2,3]
pass
res = foo()
print(res)
# 函数调用的三种形式
def foo(x,y):
return x + y
# 语句形式
foo(1,2)
# 表达式
res = foo(1,2)
res = foo(1,2) * 10
print(res)
# 函数的调用可以当做一个参数传给另外一个函数
res = foo(foo(1,2),3)
print(res)
三、函数参数
函数的参数分为两大类
1、形参: 在函数定义阶段括号内指定的参数(变量名),称之为形式参数,简称形参
2、实参: 在函数调用阶段括号内指定的参数(变量值),称之为实际参数,简称实参
一、位置形参:在函数定义阶段,按照从左到右的顺序依次定义的“变量名”
特点:必须被赋值,多一个不行少一个也不行
def foo(x,y):
print(x,y)
foo(1,2)
二、默认形参:在函数定义阶段,就已经为某个形参赋值了,该形参称之为默认形参
特点:调用阶段可以不用为其赋值
def foo(x,y=100):
print(x,y)
foo(111) # 不用传第二个值,因为默认有值
三、位置实参:在函数调用阶段,按照从左到右的顺序依次传入的“变量值”
特点:按照顺序传值
def foo(x,y):
print(x,y)
foo(1,2)
foo(2,1)
四 关键字实参:在函数调用阶段,按照key=value的形式赋值
特点:可以打乱顺序,但是仍然能够为指定的形参赋值
def foo(x,y):
print(x,y)
foo(y=2,x=1)
注意:
可以混用位置实参与关键字实参,但是
1、关键字实参必须在后
2、不能给同一个形参重复赋值
def foo(x,y):
print(x,y)
foo(1,y=2)
foo(y=2,1)
foo(1,2,y=3)
五:*args与**kwargs用在形参中:汇总行为
1.*用在形参中: *会将溢出的位置实参存成元组然后赋值给紧跟其后的形参名
例子1:
def foo(x,*y):
print(x)
print(y)
foo(1,2,3,4,5,6,7)
foo(1)
2.**用在形参中:**会将溢出的关键字实参存成字典然后赋值给紧跟其后的形参名
def foo(x,**y): # y = {'y': 2, 'z': 3, 'a': 111, 'b': 222}
print(x)
print(y)
foo(1,y=2,z=3,a=111,b=222)
六:*与**用在实参中:打撒
1.*用在实参中: *会将紧跟其后值打撒成位置实参
def foo(x,y,z):
print(x,y,z)
foo(*[111,222,333]) # foo(111,222,333)
foo(*"hello") # foo('h','e','l','l','o')
2.**用在实参中: **后只能跟字典,**会将紧跟其后字典打撒成关键实参
def foo(x,y,z):
print(x,y,z)
foo(**{'x':111,'y':222,'z':333}) # foo(x=111,z=333,y=222)
day11 函数的更多相关文章
- day11——函数名的使用、f格式化、迭代器、递归
day11 函数名的第一类对象及使用 1.可以当作值被赋值给变量 def func(): print(1) print(func) a = func a() 2.当作元素存放在容器中 def func ...
- python全栈学习--day11(函数高级应用)
一,函数名是什么? 函数名是函数的名字,本质:变量,特殊的变量. 函数名()执行此函数 ''' 在函数的执行(调用)时:打散. *可迭代对象(str,tuple,list,dict(key))每一个元 ...
- day11 函数的参数列表
""" 今日内容: 1.函数参数的分类 2.形参是对实参的值拷贝 3.实参的分类 4.形参的分类 5.打散机制 附1:字符串的比较 """ ...
- day11函数(形参实参)
形参与实参 def fn(形参们): pass # 形参:定义函数,在括号内声明的变量名,用来结束外界传来的值# 实参:调用函数,在括号内传入的实际值,值可以为常量.变量.表达式或三者的组合 # 注: ...
- Python——day11 函数(对象、名称空间、作用域、嵌套、闭包)
一.函数对象 函数名就是存放了函数的内存地址,存放了内存地址的变量都是对象,即 函数名 就是 函数对象 函数对象的应用 1. 可以直接被引用 fn = cp_fn 2 .可以当作函数参数传递 c ...
- python学习day11 函数Ⅲ (内置函数与lambda表达式)
函数Ⅲ(内置函数&lambda表达式) 1.函数小高级 函数可以当做变量来使用: def func(): print(123) func_list = [func, func, func] # ...
- day11函数的参数,函数对象 - 函数名,函数的嵌套调用
复习 # 什么是函数:具体特定功能的代码块 - 特定功能代码块作为一个整体,并给该整体命名,就是函数 # 函数的优点: # 1.减少代码的冗余 # 2.结构清晰,可读性强 # 3.具有复用性,开发效率 ...
- day-11函数的形参与实参
形参与实参 参数介绍: 函数为什么要有参数:因为内部的函数体需要外部的数据 怎么定义函数的参数:在定义函数阶段,函数名后面()中来定义函数的参数 怎么使用函数的参数:在函数体中用定义的参数名直接使用 ...
- python学习Day11 函数的参数列表
复习 什么是函数? 具体特定功能的代码块 - 特定功能代码作为一个整体,并给该整体命名,就是函数 函数的优点 : 1.减少代码的冗余,2.结构清晰,可读性强 3.具有复用性,开发效率高,维护成本高 如 ...
随机推荐
- 验证人员应该以何种角度阅读spec
转载:验证人员应该以何种角度阅读spec - 微波EDA网 (mweda.com) 在开发流程中,设计和验证人员关注的点肯定是不一样的,尤其在spec的理解上,验证人员往往需要有自己独立的理解.在拿到 ...
- Linux 显示ip、dns、网关等命令
在新版的ubuntu 终端里输入命令nm-tool, 想查看网络参数设置, 没想到却返回如下内容: 未找到 'nm-tool' 命令,您要输入的是否是: 命令 'dm-tool' 来自于包 'l ...
- poj 2060 Taxi Cab Scheme(DAG图的最小路径覆盖)
题意: 出租车公司有M个订单. 订单格式: hh:mm a b c d 含义:在hh:mm这个时刻客人将从(a,b)这个位置出发,他(她)要去(c,d)这个位置. 规定1:从(a,b) ...
- 如何在SimpleNVR用Excel表格将通道配置简单化
进入本世纪的第三个十年,流媒体们"绞尽脑汁",依靠技术不断提升用户的体验感.熟悉SimpleNVR的用户都知道,目前SimpleNVR已实现对接自有流媒体服务器平台,不限制观看人数 ...
- 学信网改绑手机号码,但是忘记了老号码怎么办?利用node.js + puppeteer 跑脚本实现改绑手机号
最近登录学信网发现自己学信网上绑定的手机号码不是目前自己使用的手机号码,于是想改绑手机号,但是发现不记得之前的手机号码了: 于是百度各种方法都无济于事:也不想重新注册账号,最后看见一篇文章通过Pyth ...
- 我罗斯方块第二次作业(Player类)
我罗斯方块第二次作业 我的任务 完成player类的编写 player类的测试 我的计划 类的设计: Player类作为一个玩家类,需要处理和玩家有关的所有信息,以及维护玩家的游戏页面map.关于玩家 ...
- Python 爬取 猫眼
1. import requests import re import pymongo MONGO_URL='localhost'#建立连接 MONGO_DB='Maoyan'#创建数据库 clien ...
- [atARC088F]Christmas Tree
合并具有交换律,因此即将一个连通块(初始为空)与一条链合并(其中各选1点,初始直接替换) 把插入改为染色,等价于对树上的一条链(包括点和边)染色,其中恰好有1个已经被染色的点(初始任意) 对于&quo ...
- [bzoj1416]神奇的口袋
容易发现操作任意次并不会改变每一个点的概率(因为每一个点加d的概率相同,期望与原数成比例),然后直接输出即可(要用高精度) 1 #include<bits/stdc++.h> 2 usin ...
- [noi1994]海盗
令$a_{i,j}(j\le i)$表示第i个人的方案中给第j个人$a_{i,j}$的钱,有以下性质: 1.如果第j个人一定同意(否则就会死)第i个人的方案,那么$a_{i,j}=0$(容易发现一定同 ...