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 函数的更多相关文章

  1. day11——函数名的使用、f格式化、迭代器、递归

    day11 函数名的第一类对象及使用 1.可以当作值被赋值给变量 def func(): print(1) print(func) a = func a() 2.当作元素存放在容器中 def func ...

  2. python全栈学习--day11(函数高级应用)

    一,函数名是什么? 函数名是函数的名字,本质:变量,特殊的变量. 函数名()执行此函数 ''' 在函数的执行(调用)时:打散. *可迭代对象(str,tuple,list,dict(key))每一个元 ...

  3. day11 函数的参数列表

    """ 今日内容: 1.函数参数的分类 2.形参是对实参的值拷贝 3.实参的分类 4.形参的分类 5.打散机制 附1:字符串的比较 """ ...

  4. day11函数(形参实参)

    形参与实参 def fn(形参们): pass # 形参:定义函数,在括号内声明的变量名,用来结束外界传来的值# 实参:调用函数,在括号内传入的实际值,值可以为常量.变量.表达式或三者的组合 # 注: ...

  5. Python——day11 函数(对象、名称空间、作用域、嵌套、闭包)

    一.函数对象  函数名就是存放了函数的内存地址,存放了内存地址的变量都是对象,即 函数名 就是 函数对象  函数对象的应用 1. 可以直接被引用  fn = cp_fn 2 .可以当作函数参数传递 c ...

  6. python学习day11 函数Ⅲ (内置函数与lambda表达式)

    函数Ⅲ(内置函数&lambda表达式) 1.函数小高级 函数可以当做变量来使用: def func(): print(123) func_list = [func, func, func] # ...

  7. day11函数的参数,函数对象 - 函数名,函数的嵌套调用

    复习 # 什么是函数:具体特定功能的代码块 - 特定功能代码块作为一个整体,并给该整体命名,就是函数 # 函数的优点: # 1.减少代码的冗余 # 2.结构清晰,可读性强 # 3.具有复用性,开发效率 ...

  8. day-11函数的形参与实参

    形参与实参 参数介绍: 函数为什么要有参数:因为内部的函数体需要外部的数据 怎么定义函数的参数:在定义函数阶段,函数名后面()中来定义函数的参数 怎么使用函数的参数:在函数体中用定义的参数名直接使用 ...

  9. python学习Day11 函数的参数列表

    复习 什么是函数? 具体特定功能的代码块 - 特定功能代码作为一个整体,并给该整体命名,就是函数 函数的优点 : 1.减少代码的冗余,2.结构清晰,可读性强 3.具有复用性,开发效率高,维护成本高 如 ...

随机推荐

  1. linux cut

    参考:Linux cut 命令详解_Linux_脚本之家 (jb51.net) 参考:cut命令_Linux cut 命令用法详解:连接文件并打印到标准输出设备上 (linuxde.net)

  2. Python Numpy matplotlib Histograms 直方图

    import numpy as np import matplotlib.pyplot as plt mu,sigma = 2,0.5 v = np.random.normal(mu,sigma,10 ...

  3. JAVA笔记 **__Netbeans常用快捷键

    sout + Tab      生成输出语句 alt+shift+F 格式化代码 Alt+insert  插入代码(包括构造函数,setter和getter方法等) Ctrl+O或Ctrlt+单击 转 ...

  4. H3C 三层交换基于IP限速

    一.背景 目前百度爬虫爬取业务总是按照自己的性能进行抓取客户数据,从来不考虑客户端的网络承受能力,导致客户端网络带宽超出预算范围,因此在客户端方面针对百度的无限制抓取采取相应的策略. 二.解决方案: ...

  5. Java8新特性Stream流应用示例

    Java8新特性介绍 过滤集合 List<String> newList = list.stream().filter(item -> item != null).collect(C ...

  6. Maven快速入门(五)Maven的依赖管理

    前面我们讲了maven项目中的最重要的文件:pom.xml 配置文件相关内容.介绍了pom 是如何定义项目,如何添加依赖的jar 包的等. 我们知道,在Maven的生命周期中,存在编译.测试.运行等过 ...

  7. vue中this.$set的用法

    之前了解这个方法的时候,感觉这一辈子也用不到这个方法,因为当时没有应用场景,但是还真有用的时候,我相信你们也有用到时候. 从三个方面给大家说一下这个this.$set: 1.this.$set实现什么 ...

  8. 问题 K: A/B Problem

    题目描述 做了A+B Problem,A/B Problem不是什么问题了吧! 输入 每组测试样例一行,首先一个号码A,中间一个或多个空格,然后一个符号( / 或者 % ),然后又是空格,后面又是一个 ...

  9. vue2与vue3的差异(总结)?

    vue作者尤雨溪在开发 vue3.0 的时候开发的一个基于浏览器原生 ES imports 的开发服务器(开发构建工具).那么我们先来了解一下vite Vite Vite,一个基于浏览器原生 ES i ...

  10. [hdu7035]Game

    称区间$[i,j]$为普通区间,当且仅当$j-i\ge 3$​​​且其操作两次内不会变为给定区间 结论:若$[i,j]$为普通区间,则$[i,j]$和$[i+1,j-1]$​​​​​​​​​​的状态( ...