代码不规范、上班两行泪
函数
函数可以理解为一个工具(模块),就如同前面所学的生成随机数的random函数、input函数、Type函数等,他们的存在就如同工具一样,函数的出现可以解决代码的冗余以及代码的重复书写,讲代码定义成函数时可以随时使用。
官方一点的解释:函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数的定义
函数的命名可以由下划线、字母、数字组成
不能与关键字同名
不能与数字开头
def全称 define,翻译过来就叫定义
函数是通过 def 关键字开头的,例如
def 函数名():
就可以定义一个函数
# 函数的定义
#def 函数名称():
# 需要重复的代码
#函数的使用
#函数名字加上一个圆括号 函数名()
# def Say():的意思是,通过def关键字定义一个说话的函数叫 Say
def Say():
# 输出三次 hello define
print('hello define')
print('hello define')
print('hello define')
# Say()这里的意思是使用这个函数,函数的使用一般是函数名字+一个圆括号
Say()
看到以上的操作后,可能会有同学会问到,为什么不直接用循环呢?
答:循环虽然可以解决重复的问题,但不够灵活,函数有函数的作用,函数只需要定义一次就可以重复使用
# 函数的定义
# def Say():的意思是,通过def关键字定义一个说话的函数叫 Say
def Say():
# 输出三次 hello define
print('hello define')
print('hello define')
print('hello define')
# Say()这里的意思是使用这个函数,函数的使用一般是函数名字+一个圆括号
Say()
Say()
Say()
函数的不能先使用再定义,一般都是先定义好再使用
# Say()这里的意思是使用这个函数,函数的使用一般是函数名字+一个圆括号
Say()
# def Say():的意思是,通过def关键字定义一个说话的函数叫 Say
def Say():
# 输出三次 hello define
print('hello define')
print('hello define')
print('hello define')
报错的信息:NameError: name 'Say' is not defined (名为Say的函数没有定义)
函数的进阶:
参数的接收
形参:一种类似于数学中的未知数,可以接收任意数据
实参:具体的值
定义一个求和的函数
以下就是函数的魅力,当代码被定义为函数时,可以通过函数调用来重复是使用某个功能
# def Sum(a,b):的意思是,通过def关键字定义一个求和的函数叫 Sum,并且接收两个形参,名为a和b
def Sum(a,b):
# 输出 a+b
print(a+b)
# Sum(10,20)这里的意思是使用这个函数,并且通过()把10和20这两个实参,给了函数里面名叫a和b的形参,他们的关系是一一对应的,此时的a和b就是10和20,他是可变的,你传递什么他就是什么
Sum(10,20)
Sum(5,20)
Sum(2,20)
结果的返回
在函数内部有个叫return的关键字,他是专门把结果给外部的
为什么需要返回呢?例如Sum这个求和函数,再内部计算完毕后,还需要把结果二次操作时就可以把结果通过return返回回去了
# def Sum(a,b):的意思是,通过def关键字定义一个求和的函数叫 Sum,并且接收两个形参,名为a和b
def Sum(a,b):
# 通过return 返回 a + b 的求和结果
return a + b
# sum1 = Sum(10,20)的意思是,使用Sum的这个函数,并且传入10和20,然后定义一个名叫sum1的变量接收Sum函数返回回来的结果
sum1 = Sum(10,20)
sum2 = Sum(5,20)
sum3 = Sum(2,20)
# 把返回的结果再次加减操作,这就是return的作用
sum4 = sum1 + sum2 - sum3
print(sum4)
占位符 之 %s
与前面所学的 %d一样,都属于占位符,%d的作用是格式化数字,%s是格式化字符串
与%d的使用方式一样,如果忘记了可以回头看看Python学习笔记 02
函数进阶案例: 华强买瓜
没啥案例可以讲,就拿前面写过的华强买瓜的案例利用函数优化
一次定义多次使用,灵活多变
案例涉及知识点
input函数,def函数定义、%s占位符(字符串占位符)
def sell(Name,Say):
print("%s:%s"%(Name,Say))
sell("路人","有一人前来买瓜")
sell("刘华强","哥们儿,这瓜多少钱一斤?")
sell("瓜摊老板",input("回复价格:"))
sell("刘华强","这瓜皮子是金子做的还是这瓜粒子是金子做的")
sell("瓜摊老板","你瞧瞧现在哪有瓜呀,这都是大棚的瓜,你嫌贵我还嫌贵呢")
sell("刘华强","给我挑一个")
sell("瓜摊老板","行,这瓜怎么样?")
sell("刘华强","这瓜保熟吗?")
sell("瓜摊老板","我开水果摊的,能卖你生瓜蛋子吗?")
sell("刘华强","我问你这瓜保熟吗?")
sell("瓜摊老板","你是故意找茬儿,是不是,你要不要吧?")
sell("刘华强","你这瓜要是熟我肯定要,那它要是不熟怎么办?")
sell("瓜摊老板","要是不熟,我自己吃了它,满意了吧?")
sell("瓜摊老板","十五斤,三十块")
sell("刘华强","你这那够十五斤,你这秤有问题")
sell("瓜摊老板","你tm故意找茬儿是不是,你要不要吧,你要不要!")
sell("刘华强","吸铁石")
sell("刘华强","另外你说的,这瓜要是生的,你自己吞进去")
sell("瓜摊老板","你TM劈倭瓜是吧,我...")
sell("路人","萨日朗,萨日朗!")
模块
函数也可以叫模块
函数再当前文件下时,直接函数名加圆括号就可以调用了,但在其他文件要使用这个文件时就需要通过前面所学的import关键字去引入你所写的函数
例如:import 你函数所在的文件名字 就可以引入你所写的函数到其他文件使用了
模块案例
第一步:新建一个名为 calculation 的Python文件,并把下面的代码写到里面(不要复制,自己手写)
# 加法
def addition(a,b):
return a + b
# 减法
def subtraction(a,b):
return a - b
# 乘法
def multiplication(a,b):
return a * b
# 除法
def division(a,b):
return a * b
第二步:新建一个 test的文件
# 通过import导入刚刚新建的calculation文件
import calculation
# 通过文件名calculation点你需要调用的函数,就可以调用你在另一个文件里写的函数了
# 例如以下calculation.addition(10,20)的意思是通过calculation调用了calculation文件里的addition求和函数,并且传递10和20,再定义一个sum变量接收addition返回的值
sum = calculation.addition(10,20)
print(sum)
作者:依风君
链接:https://juejin.cn/post/7009233267249397797
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。