DAY09、函数
一、函数的定义:跟变量名的定义大同小异
1、声明函数的关键词:def
2、函数(变量)名:使用函数的依据
3、参数列表:() 参数个数可以为0到n个,但()一定不能丢,完成功能的必要条件
4、函数体:实现函数功能的具体代码
5、函数的返回值:return,功能完成的返回信息
例:def fn(moeny):
print('付了%s钱'%money)
print('函数的一行代码')
return'冰红茶'
print(fn,id(fn)) #fn直接打印,只能看到函数存放代码的地址
二、使用函数:函数名()
fn(10)
函数的返回值也称之为函数值,就是函数执行之后得到的结果
可以用变量接受(msg = fn(10))、可以直接打印(print(fn(10)))、可以直接使用
函数执行的本质:执行函数体,得到函数返回值
三、从函数体进行分类:
重点:先定义后调用
1、空函数:项目之初,知道项目有哪些功能,但还没有明确功能体,可以用pass进行函数体填充
例: def computed():
pass
2、非空函数:用函数体
例: def add_num(n1,n2):
return n1 + n2
res = add_num(10,20)
print(res) # 30
四、从参数列表进行分类:
1、无参函数:函数体运行不需要外界提供参数
例:def print_msg():
print('welcome')
print_msg()
2、有参函数:函数体运行需要外界提供参数
例: def print_school_msg(p1,p2):
print('welcome %s and %s'%(p1,p2))
p1 = input('输入名字:')
p2 = input('输入名字')
print_school_msg(p1,p2)
五、从返回值进行分类:
空返回:
1、没有return的函数:
例: def fn1():
print('fn1 run!!!')
res = fn1()
print('没有return的返回值:%s',%res) #None
2、空return
例: def fn2():
print('fn2 run!!!')
return
ren = fn2()
print('空return的返回值,%s'%res) #None
注:没有return函数和空return函数的区别:
空return:可以根据具体情况主动退出函数(像break一样结束循环)
值返回:
1、返回一个值:
例: def add_num(n1,n2):
return n1+ n2
print(add_num(10+15)) #25
def computed(n1, n2):
# 返回四则运算的结果
r1 = n1 + n2
r2 = n1 - n2
r3 = n1 / n2
r4 = n1 * n2
return [r1, r2, r3, r4]
a,b,c,d = computed(10,20)
print(a,b,c,d)
2、返回多个值:本质就是返回装有多个值得元组
def computed_sup(n1, n2):
# 返回四则运算的结果
r1 = n1 + n2
r2 = n1 - n2
r3 = n1 // n2
r4 = n1 ** n2
return r1, r2, r3, r4
a, b, c, d = computed_sup(50, 25)
print(a, b, c, d)
res = computed_sup(10,20)
print(res) #得到的是装有所有结果的元组
六、函数的嵌套使用:在一个函数体中调用另一个函数
注:在解释过程中,不执行函数体,在函数被调用时,函数体才被执行
def max_2(n1, n2):
if n1 > n2:
return n1
return n2 #比较两个数的大小
def max_3(n1, n2, n3):
m2 = max_2(n1, n2)
return max_2(m2, n3) #比较三个数的大小
def max_4(n1, n2, n3, n4):
m2 = max_2(n1, n2)
return max_3(m2, n3, n4) #比较四个数的大小
七、应用场景:
指定文件名的文件复制:
def copy_file(source, target):
'''
:param source: 被复制的文件
:param target: 复制得到的文件
:return: #函数体的注释
'''
with open(source, 'rb') as r, open(target, 'wb') as w:
for line in r:
w.write(line)
copy_file('被复制的文件','复制得到的文件')
八、了解:脚本文件的执行
import sys
# 存放当前文件作为脚本文件执行的参数们:['当前文件的绝对路径', 手动传入的参数们]
# 脚本文件执行:直接用python解释器运行该文件
print(sys.argv)
# D:\fullstack_s4\day09\代码\0.复习.py length = len(sys.argv)
if length > 1:
print("有指令传入")
cmd = sys.argv[1]
if cmd == '1':
print("新建文件")
# f = open('cmd.txt', 'w', encoding='utf-8')
# f.close()
with open(r'D:\fullstack_s4\day09\代码\cmd.txt', 'w', encoding='utf-8') as f:
pass
elif cmd == '2':
print("书写文件")
with open(r'D:\fullstack_s4\day09\代码\cmd.txt', 'w', encoding='utf-8') as f:
f.write("写入内容")
else:
print("指令有误")
else:
print("没有指令传入")
DAY09、函数的更多相关文章
- day09 函数学习
内容详细 1.函数 1.1.面向过程: 可读性差/可重用差 1.2.面向对象:
- python day09 函数(第一篇)
2019.4.9 S21 day09笔记总结 一.三元运算 三元运算又叫三目运算.(是为了赋值的) v = 前面 if 条件 else 后面 #条件为真,v取if前面的值:条件为假,v取if后面的值 ...
- 老男孩python 自学day09 函数开始
什么是函数? 函数用关键字def定义 语法: def 函数名(形参): 函数体 return 调用 函数名(实参) 命名规则:和变量一样 1. 由数字, 字母, 下划线组成 2. 不能数字开头. 更不 ...
- day09——初识函数
day09 函数的定义 # len() s = 'alexdsb' count = 0 for i in s: count += 1 print(count) s = [1,2,23,3,4,5,6] ...
- 22期老男孩Ptython全栈架构师视频教程
老男孩Ptython全栈架构师视频教程 Python最新整理完整版22期视频教程 超60G课程容量<ignore_js_op> <ignore_js_op> <ignor ...
- day09 python函数 返回值 参数
day09 python 一.函数 1.函数 函数是对功能的封装 语法: 定义函数: def 函数名(形参): ...
- day09 python之函数进阶
楔子 假如有一个函数,实现返回两个数中的较大值: def my_max(x,y): m = x if x>y else y return mbigger = my_max(10,20)print ...
- python学习 day09打卡 初识函数
本节内容: 1.什么是函数 2.函数定义,函数名,函数体及函数的调用 3.函数的返回值 4.函数的参数 一.什么是函数 函数:对代码块和功能的封装和定义 定义一个事情或者功能.等到需要的时候直接去用, ...
- day09作业—函数进阶
# 2.写函数,接收n个数字,求这些参数数字的和.(动态传参) def func1(*args): sum = 0 for i in args: sum += i print(sum) func1(1 ...
随机推荐
- CPU, PSU, SPU - Oracle Critical Patch Update Terminology Update
It all started in January 2005 with Critical Patch Updates (CPU). Then Patch Set Updates (PSU) were ...
- hive并行执行作业; 强化在脑海的印象
如果集群资源充足可以设置:set hive.exec.parallel=true; (默认是false) 这样相互独立的job可以并行执行!!!! count(distinct) 最好改写为group ...
- 第9章 Java中的线程池 第10章 Exector框架
与新建线程池相比线程池的优点 线程池的分类 ThreadPoolExector参数.执行过程.存储方式 阻塞队列 拒绝策略 10.1 Exector框架简介 10.1.1 Executor框架的两级调 ...
- Luogu1627 [CQOI2009]中位数
Luogu1627 [CQOI2009]中位数 给出一个 \(n\) 的排列,统计该排列有多少个长度为奇数的连续子序列的中位数是 \(k\) \(n\leq10^5\) \(trick\) :因为不需 ...
- windows下数据挖掘相关包numpy、pandas的安装
安装Anaconda的绕道 这里介绍如何在windows下安装numpy/scipy/matplotlib/pandas/scikit_learn等数据分析相关包 相关环境: win7 64位 pyt ...
- 基于Metronic的Bootstrap开发框架经验总结(16)-- 使用插件bootstrap-table实现表格记录的查询、分页、排序等处理
在业务系统开发中,对表格记录的查询.分页.排序等处理是非常常见的,在Web开发中,可以采用很多功能强大的插件来满足要求,且能极大的提高开发效率,本随笔介绍这个bootstrap-table是一款非常有 ...
- 【LeetCode-数组篇】 1 Two Sum
1 前言 之所以开始刷 LeetCode 上的算法题,一是快面临秋招,第二点是因为提升自己的编程能力,坚持两个月,希望博友们监督. 这个系列打算用 C# 和 Java 编程,为什么用两门语言,因为经历 ...
- C#中存储数据的集合:数组、集合、泛型、字典
为什么把这4个东西放在一起来说,因为c#中的这4个对象都是用来存储数据的集合……. 首先咱们把这4个对象都声明并实例化一下: //数组 ]; //集合 ArrayList m_AList = new ...
- Mysql:is not allowed to connect to this MySQL server
连接mysql的时候发生这个错误:ERROR 1130: Host '192.168.1.110' is not allowed to connect to this MySQL server 解决方 ...
- koa服务器搭建基础
之前我一直使用rails搭建网站.rails与koa的基本理念很相似,都是基于中间件提供一层层的服务.所不同的是,rails有很多内置的中间件,这使得开发者只需要关注MVC模块以及页面路由.而Koa这 ...