目录

  • 零、了解函数
  • 一、函数的组成
  • 二、函数的定义
  • 三、函数的使用
  • 四、函数的分类
  • 五、函数的嵌套使用

零、了解函数

1.什么是函数
在程序中函数就是具备某一功能的工具
2.为何用函数
为了解决以下问题
1.程序的组织结构不清晰,可读性差
2.代码冗余
3.扩展性差

一、函数的组成

函数是由函数名、函数体、返回值、参数四个部分组成:
函数名:使用该函数的依据
函数体:完成功能的代码块
返回值:功能完成的反馈结果
参数:完成功能需要的条件信息

二、函数的定义

def 函数名(参数1,参数2,...):
'''注释'''
函数体 # 具体逻辑代码
return '返回值' 注意:
1.函数必须原则:先定义,后调用
2.函数名存放的是函数地址

三、函数的使用

def foo(money):
print('农夫山泉:%s元'%money)
print("第一个函数!")
return '函数的返回值' def foo1():
print("第二个函数!")
return '函数的返回值' 3.1 函数名:拿到函数的地址
print(foo) # <function foo at 0x0000020B57A1E2F0> 3.2 函数名():拿到函数的地址,并执行函数中存放的代码块(函数体)
foo1() # "第二个函数!" 3.3 函数名(参数):执行函数并传入参数
foo(2)
>>>农夫山泉:2元
第一个函数! 3.4 函数名():执行完毕后,会得到函数的返回值,返回值就跟普通变量一样
print(foo1()) # "第二个函数! \n 函数的返回值 "
def fn(num):
print('c传入的num值:%s' %num)
return '收到了'
res = fn(10) # 控制台会打印:传入的num值:10
# res的值为:"收到了" # 注:函数一定要先定义再调用

四、函数的分类

4.1 根据返回值划分

# 空返回
1.没有return 的函数
2.空 return def fn1():
print("fn1 run!!! ",end='')
res = fn1()
print("没有return的关键字的返回值:%s"%res) def fn2():
print("fn2 run!!! ",end='')
return
# return None
# 约等于 不写
res = fn2()
print("空return关键字的返回值:%s"%res)
# 有值返回
3.return一个值
4.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) res = computed_sup(50,25) # 装有所有的结果
print(res)

4.2 从参数列表进行分类

# 无参函数:函数体运行不需要外界体用参数
def print_msg():
print("hello world!")
print_msg() # 有参函数:函数体运行需要外界体用参数
def school_msg(name):
print("%s到此一游!" % name)
name = input("名字:")
school_msg(name)

五、函数的嵌套调用

5.1 函数嵌套调用定义

在一个函数体中调用另一个函数
def fn1 ():
print("fn1 run")
fn2() def fn2 ():
print("fn2 run")
fn3() def fn3 ():
print("fn3 run")
# fn1()
# 注意执行流程:执行fn1,打印"fn1 run",再调用fn2,打印"fn2 run",
# 再调用fn3,打印"fn3 run",再返回fn2,执行完返回fn1,最后结束程序 # 注:
1. 在解释过程中,不执行函数体,在函数被调用时,函数体才被执行
2. 在fn1中调用fn2,所以在调用fn1的逻辑应该在fn2定义之后

5.1 求两个数的最大值

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

def max_2(n1,n2):
if n1 > n2:
return n1
return n2
print(max_2(20,30)) # 纯判断版:
def max_3(n1,n2,n3):
if n1 > n2 and n1 > n3:
return n1
if n2 > n2 and n2 > n3:
return n2
return n3 # 调用函数优化版
def max_3_2(n1,n2,n3):
m2 = max_2(n1,n2)
return max_2(m2,n2)
print(max_3_2(10,15,12))
案例: 指定文件名的复制
# 旧版,无函数
def copy_img(target_img):
with open('001.jpg','rb') as r,open('target_img','rb') as w:
for line in r :
w.write(line) # 使用函数,改进版
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('1.txt','2.txt')

Python 入门基础8 --函数基础1 定义、分类与嵌套使用的更多相关文章

  1. Python入门篇-匿名函数

    Python入门篇-匿名函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.匿名函数概述 1>.什么是匿名函数 匿名,即没有名字 匿名函数,即没有名字的函数 2>. ...

  2. Python入门篇-生成器函数

    Python入门篇-生成器函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.生成器概述 1>.生成器generator 生成器指的是生成器对象,可以由生成器表达式得到, ...

  3. Python新手学习基础之函数-概念与定义

    什么是函数? 函数是可以实现一些特定功能的方法或是程序,简单的理解下函数的概念,就是你编写了一些语句,为了方便使用,把这些语句组合在一起,给它起一个名字,即函数名.使用的时候只要调用这个名字,就可以实 ...

  4. python入门到精通[三]:基础学习(2)

    摘要:Python基础学习:列表.元组.字典.函数.序列化.正则.模块. 上一节学习了字符串.流程控制.文件及目录操作,这节介绍下列表.元组.字典.函数.序列化.正则.模块. 1.列表 python中 ...

  5. python之旅:函数基础

    一.引子 1.函数是什么 用函数与不用函数 #1.代码的组织结构不清晰,可读性差 #2.遇到重复的功能只能重复编写实现代码,代码冗余 #3.功能需要扩展时,需要找出所有实现该功能的地方修改之,无法统一 ...

  6. [Python]Python入门笔记:语法基础

    Python笔记 一.基本语法 1.1 注释 文档注释: """contents""" 多行注释: ''' contents ''' 单行注 ...

  7. Python 入门学习 -----变量及基础类型(元组,列表,字典,集合)

    Python的变量和数据类型 1 .python的变量是不须要事先定义数据类型的.能够动态的改变 2. Python其中一切皆对象,变量也是一个对象,有自己的属性和方法 我们能够通过 来查看变量的类型 ...

  8. JS基础语法---函数的其他定义方式

    函数的其他定义方式 函数声明 函数表达式:把一个函数给一个变量,此时形成了函数表达式 函数调用 函数的自调用   命名函数:函数如果有名字,就是命名函数 匿名函数:函数如果没有名字,就是匿名函数   ...

  9. JS基础语法---函数---介绍、定义、函数参数、返回值

    函数: 把一坨重复的代码封装,在需要的时候直接调用即可 函数的作用: 代码的重用 函数需要先定义,然后才能使用 函数名字:要遵循驼峰命名法 函数一旦重名,后面的会把前面的函数覆盖 Ctrl +鼠标左键 ...

  10. Python入门-内置函数一

    什么是内置函数?就是python给你提供的拿来直接用的函数,比如print,input等等,截止到python版本3.6.2 python一共提供了68个内置函数,他们就是python直接提供给我们的 ...

随机推荐

  1. 一份超全超详细的 ADB 用法大全

    http://blog.csdn.net/u010375364/article/details/52344120

  2. "软件"和"软件工程"一词最早被谁提出?

    1."softwar”:1953年Richard R.Carhart在备忘录中使用software一词2.软件工程 1968 年北大西洋公约组织在前联邦德国开会提出的 1968年秋季,NAT ...

  3. Linux内核分析——第一周学习笔记20135308

    第一周 计算机是如何工作的 第一节 存储程序计算机工作模型 1.冯·诺依曼结构模型:冯·诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构.程序指令存储地址和数据存储 ...

  4. 10慕课网《进击Node.js基础(一)》初识promise

    首先用最简单的方式实现一个动画效果 <!doctype> <html> <head> <title>Promise animation</titl ...

  5. LeetCode 638 Shopping Offers

    题目链接: LeetCode 638 Shopping Offers 题解 dynamic programing 需要用到进制转换来表示状态,或者可以直接用一个vector来保存状态. 代码 1.未优 ...

  6. Java认识对象

    一.类与对象 java中有基本类型和类类型两个类型系统.Java撰写程序几乎都在使用对象,要产生对象必须先定义类,类是对象的设计图,对象是类的实例 1.定义类 类定义使用的关键词为class,建立实例 ...

  7. Rendertron:谷歌 Chrome 新的 headless 模式又贡献了一个新的技巧

    摘自:https://zhuanlan.zhihu.com/p/31670033 Rendertron:JavaScript Web 富应用的一个老问题是如何使这些页面的动态渲染部分可供搜索引擎检索. ...

  8. Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 0. 准备工作

    一.关于 Python Python 是全球使用人数增长最快的编程语言!它易于入门.功能强大,从 Web 后端 到 数据分析.人工智能,到处都能看到 Python 的身影. Python 有两个主要的 ...

  9. 位运算卷积-FWT

    问题 给出两个幂级数 \(f,g\) ,求 \[ h=\sum _i\sum _jx^{i\oplus j}f_ig_j \] 其中 \(\oplus\) 是可拆分的位运算. 算法 由于位运算具有独立 ...

  10. 【题解】 [ZJOI2009]假期的宿舍 (二分图匹配)

    懒得复制题面,戳我 Solution: 处理出床位.要留校的人(注意来访问的人一定住校),和人与人的关系(连边) 再接着就是二分图. 注意的就是连向的人必须是有床位的 还要注意的就是只用判断住校的同学 ...