一、函数的定义

函数的四个组成部分:

函数名、

函数体、

函数返回值、

函数参数

1、概念:重复利用的工具,可以完成特定功能的代码块,函数是存放代码块的容器

2、定义:

def:声明函数的关键词

函数名fn:使用该函数的依据

函数体:完成功能的代码块

返回值return:功能完成的反馈结果

参数():完成功能需要的条件信息(参数个数可以为0~n个,但()一定不能丢)

3、定义函数的方法:

def 函数名(参数们):

函数体

return‘返回值’

fn直接打印,只能看到函数存放代码的地址

age1:def fn()

     print('函数的一行代码')
print('函数的二行代码')
return'函数的返回值'
print(fn,id(fn))>>>>打印fn的全部行数体的地址
age2:def fn (money):
print('你付了%元钱'%(money))
使用函数:函数名()
fn(10)
print("把水喝了") 函数的返回值也称之为函数值,就是函数执行结束后的结果
可以用变量接受|可以直接打印|可以直接使用 msg=fn(10)
print(msg)>>>.输出age1全部的函数体 得出结论:函数执行的本质:执行函数体,得到函数返回值

二、函数的操作、使用方法

1、先定义后使用

 计算
空函数:项目值出,知道项目有哪些功能,但还没有明确功能体,可以用pass进行函数体填充
def computed():
pass
非空函数:用函数体
def add_num(n1,n2):
''' :param n1:第一个数
:param n2: 第二个数
:return: 两个数之和
'''
return n1+n2 computed() res=add_num(10,20)
print(res) a-50
b=100
print(add_num(a,b))
2、如何使用函数
函数名:拿到行数的地址
函数名():拿到函数的地址,并执行函数中存放的代码块(函数体)*******
函数名(参数):执行函数并传入参数 函数名()执行完毕后,会得到函数的返回值,返回值就跟普通变量一样,可以直接打印、使用、运算
eg:def  fn(num):
print("传入的num值:%s")

  

 

三、函数的分类

1、根据参数列表划分

无参函数:函数体不需要外界提供参数

def start():
print('系统启动')
start()

  

有参函数:函数体需要外界提供参数

def login(usr, pwd):
if usr == 'owen' and pwd == '':
print('登录通过')
else:
print('登录失败') login('owen', '')

2、从返回值进行划分

空返回

1、没有return的函数

2、空return

def fn1():
print('fn1 run !!!!')
res=fn1()
print('没有return关键字的返回值:%s'%res) # >>>>输出Noen def fn2():
print('fn2 run!!!1')
return
return None
res=fn2()
print('空return关键字的返回值:%s'%res) # >>>>输出Noen

值返回

1、return一个值

2、return多个值

一个值的返回
def add_num(n1, n2):
return n1 + n2
print(add_num(10, 15)) 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(50, 25)
print(a, b, c, d) 多个值的返回: 本质就是返回装有多个值的元组
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(50, 25) # 得到的是装有所有结果的元组
print(res)

3、无return函数与空return函数的区别

无return函数与空return函数的区别
空return:可以根据具体情况主动退出函数(像break借束循环一样)
def fn3(msg):
print('fn3 第一行逻辑')
# msg 信息不正常:''|Noen
if msg=='' or msg is None:
return # 结束函数
print('msg信息正常:%s'% msg)
msg=input('msg:')
fn3(msg)

四、函数的嵌套调用

1、定义:在一个函数体重调用另一个函数

2、方法:在解释过程中,不执行函数体,在函数被调用时函数体才被执行

ef fn1 ():
print('fn1 run')
fn2()
def fn2():
print('fn2 run')
fn3()
def fn3():
print('fn3 run')
fn1()
注:在fn1中调用了fn2,所以fn1的逻辑应该在fn2定义之后

案例:用函数实现获取两个数的最大值

def max_2(n1,n2):
if n1>n2:
return n1
return n2
print(max_2(10,20)) 用函数实现获取三个数的最大值 def max_3(n1,n2,n3):
m2=max_2(n1,n2)
return max_2(m2,n3)
print(max_3(10,20,30)) 用函数实现获取四个数的最大值 def max_4(n1,n2,n3,n4):
m2 = max_2(n1, n2)
return max_3(m2, n3,n4)
print(max_4(10,20,30,40))

五、补充指定文件名的文件复制和函数实现登录注册

1、指定文件们的文件复制

with open('001.jpg','rb') as r,open('100.jpg','wb') as w:
for line in r:
w.write(line) with open('001.jpg','rb') as r,open('200.jpg','wb')as w:
for line in r:
w.write(line)
def copy_img(target_img):
with open('001.jpg','rb')as r ,open('target_img','wb')as w:
copy_img('888.jip')
copy_img('999.jpg')
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('cmd.txt','aaa.txt')
copy_file('temp.txt','bbb.txt')

2、函数实现登录注册


'''
1.可以循环登录注册,输入1代表选择登录功能,输入2代表注册功能,输入0代表退出,其他输入代表输入有误,重输
2.用户的账号密码信息存放在usr.txt文件中,保证用户注册成功后,重启系统,用户信息仍然保存
3.登录在账号验证通过才输入密码验证登录,账号验证三次失败自动进入注册功能,登录三次验证失败自动退出系统
4.第一次注册,文件写入 账号:密码 信息,再次注册追加写入 |账号:密码 信息 ''' # 获取文件在用户信息
def get_usr_map():
pass # 注册
def register():
print('注册页面')
pass # 登录
def login():
print('登录页面')
pass # 启动系统
def start():
print("系统启动!")
while True:
tag=input("""请输入操作指令
0 退出
1 登录
2 注册 》》》: """)
if tag.isdigit():
tag=int(tag)
if tag==0:
break
elif tag==1:
login()
elif tag==2:
register()
else:
print('输入有误,请重新输入') # 启动系统
start()

python—day9 函数的定义、操作使用方法、函数的分类、函数的嵌套调用的更多相关文章

  1. python基础3之文件操作、字符编码解码、函数介绍

    内容概要: 一.文件操作 二.字符编码解码 三.函数介绍 一.文件操作 文件操作流程: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 基本操作: #/usr/bin/env ...

  2. 如何用python的装饰器定义一个像C++一样的强类型函数

        Python作为一个动态的脚本语言,其函数在定义时是不需要指出参数的类型,也不需要指出函数是否有返回值.本文将介绍如何使用python的装饰器来定义一个像C++那样的强类型函数.接下去,先介绍 ...

  3. MySQL的存储函数(自定义函数)的定义和使用方法

    存储函数 什么是存储函数: 封装一段sql代码,完成一种特定的功能,返回结果. 存储函数的语法:  create function 函数([函数参数[,….]]) Returns 返回类型 Begin ...

  4. python 使用exec执行定义好的方法,提示“name 'XXX' is not defined”

    文件A中的exec(),调到了文件B中的方法,提示name is not defined exec()调用时,提示方法没有定义 试过了的方法: 1.百度上说是局部变量或者是全局变量之间的文件,然后在e ...

  5. python openpyxl 封装Execl常用操作的方法

    封装Excel操作方法:先装openpyxl:pip install openpyxl==2.4.5(可以指定版本) 封装脚本:#encoding=utf-8 from openpyxl import ...

  6. Python的循环正确的操作使用方法详解

    要计算1+2+3,我们可以直接写表达式: >>> 1 + 2 + 3 6 要计算1+2+3+...+10,勉强也能写出来. 但是,要计算1+2+3+...+10000,直接写表达式就 ...

  7. python之数据驱动Excel+ddt操作(方法二)

    一.Mail163数据如下: 二.Excel+ddt代码如下: import xlrdimport unittestfrom selenium import webdriverfrom seleniu ...

  8. python中函数的定义及调用

    python中函数的定义及使用方法 1.函数的概念:函数是将具有独立功能的代码块组织为一个整体,使其具有特殊功能的代码集; 2.函数的作用:使用函数可以加强代码的复用性,提高程序编写的效率; 3.函数 ...

  9. (C语言逻辑运算符!)&&两种定义字符串的方法&&局部变量、全局变量&&内部函数、外部函数。(新手基础知识备忘录)

    (一)      四个逻辑运算符:!(逻辑非) ||(或) &&(与) ^ (异或) 位运算:&(与) |(位或) (二)        如何定义字符串: 1,字符串常量   ...

  10. python - 函数的定义和使用

    目录 函数的定义和使用 一. 为什么要用函数? 二. 函数的参数 三. 函数的变量 global和nolocal 四. 递归函数 五. lamabda匿名函数 函数的定义和使用 1 def test( ...

随机推荐

  1. RabbitMQ 保证消息不丢失

    参考:https://www.imooc.com/article/49814 发送消息的时候,加上messageId字段,数据库记录消息日志表 ,插入的时候为发送中 当收到消息的时候,更改为已发送 , ...

  2. 使用Nexus搭建私有Nuget仓库

    前言 Nuget是ASP .NET Gallery的一员,是免费.开源的包管理工具,专注于在.Net / .Net Core应用开发过程中第三方组件库的管理,相对于传统单纯的dll引用要方便.科学得多 ...

  3. python书籍推荐:Head First Python(中文版)

    所属网站分类: 资源下载 > python电子书 作者:熊猫烧香 链接:http://www.pythonheidong.com/blog/article/64/ 来源:python黑洞网,专注 ...

  4. Jfianl框架定时器使用配置

    Jfianl 自2.3版本后就整合了定时器到框架中,赞一个: 下面我来总结下自己使用cron4j到达定时效果的经验,不足之处还请见谅: Cron4jPlugin是作为JFinal的Plugin而存在的 ...

  5. E - Elevator

    E - Elevatorhttp://codeforces.com/gym/241680/problem/E同余最短路,从0~a-1中每一个i向(i+b)%a连一条权值为b的边,向(i+c)%a连一条 ...

  6. asp.net core1.1的PlatformAbstraction源码

    PlatformAbstraction类在现在的asp.net core中已经废弃了,但是此类的设计还是不错的,可以借鉴,源码如下: namespace Microsoft.Extensions.Pl ...

  7. JAVA递归生成树形菜单

    递归生成一个如图的菜单,编写两个类数据模型Menu.和创建树形的MenuTree.通过以下过程实现: 1.首先从菜单数据中获取所有根节点. 2.为根节点建立次级子树并拼接上. 3.递归为子节点建立次级 ...

  8. 【转】Mac 删除文件夹里所有的.svn文件

    转自: mac 删除文件夹里所有的.svn文件   想要把SVN專案作轉移或複製時 舊的「.svn」真的是很煩人的東西 最快的方式是用終端機輸入 sudo find /Users/justfly/Do ...

  9. <玩转Django2.0>读书笔记:表单

    1. 表单字段 参考: 官方文档 Django表单字段汇总 2. 表单代码示例(forms.Form) # form.py代码 # 获取数据库数据 choices_list = [(i+1,v['ty ...

  10. AI零基础入门之人工智能开启新时代—下篇

    人工智能概述 人工智能的定义 · 人工智能是通过机器来模拟人类认识能力的一种科技能力 · 人工智能最核心的能力就是根据给定的输入做出判断或预测 · 思考:通过什么途径才能让机器具备这样的能力? · 举 ...