函数

  函数是一个独立且封闭完成特定功能的代码块,可以在任何地方被调用。Python内置了很多函数,我们可以直接调用,使用的时候,先查询下Python的官方文档即可:

http://docs.python.org/3/library/functions.html#abs, 
  为什么要使用函数

  1、解决代码重复问题

   2、代码结构和思维结构一致

   3、利于分工合作

   4、代码清晰易懂,易修改

  如何定义和调用函数

  基本语法是:

# 定义一个函数
def apple(a):
b = a + 1
print(b)
return a
apple(11)

  注意的点:

  1、函数定义的函数体内必须有代码块,如果没有需要执行的代码,则用pass代替;

  2、定义函数后冒号后一定要缩进;

  3、return:表示函数的返回值,如果调用的地方需要一个函数的返回值的话,则需要使用return,如果没有的话,则不需要;它还表示函数的结束。

  4、函数的调用只需要调用函数名,然后输入对应的参数即可;

  5、函数调用前面不要有缩进。

  如何传递参数

  形参,类似变量的使用,不多说;

  实参:

  位置实参,参数的位置与定义的一致;

  关键字实参,将值赋值给关键字的操作,顺序颠倒没关系

  指定默认参,定义函数的时候确定好

  任意数量的实参

  有时候,我们不知道需要传递多少个实参。函数调用时候,无需考虑形参的个数。可以任意指定实参的数量。 PYTHON 通过使用*,让程序创建一个空元组,可以接受任意数量的参数值

def welcome_python(*member_names,hope='希望生活幸福'):
# 任意多个参数的函数
for member_name in member_names:
print(f'你好, {member_name}. 欢迎光临')
print(f'\t{hope}')
welcome_python('Kim','Grace','Nelson Lam','None')

  返回值

  函数运行完成以后,如果需要返回一个值给调用该函数的地方,则使用 return 返回。函数返回值的类型可以是基本数据类型,也可以是字典、列表等

  传递数据结构

  传递列表

  列表也可以作为函数的参数。函数就可以直接访问列表中的元素

def welcome_python(member_names,hope='希望你能坚持下去'):
# 列表作为参数的函数
for member_name in member_names:
print(f'你好, {member_name}. 恭喜成为候选人')
print(f'\t{hope}')
list_name =['Kim','Grace','Nelson Lam','None']
welcome_python(list_name)

  传递字典

  函数中传递字典。在 Python 中,使用**作为形参接受实参传递的键值对。注意区别:在形参列表中,*表示传递空元组、 **表示传递字典

def employee(first_name,last_name,**employee_infor):
'''
创建字典,存储所有的员工信息
'''
employee = {}
employee['first_name'] = first_name
employee['last_name'] = last_name # 使用for循环存储所有的其他键值对信息
for key,value in employee_infor.items():
employee[key] = value # 注意key不用有引号,否则值能显示组后一个实参 return employee my_employee = employee('Yilin','Huang',location = '广州',dep = '数据分析')
print('Print my employee imformation')
for key,value in my_employee.items():
print(key + ':' + value + '\n')

  一个小实例项目:

  

'''
小项目实战:如何利用 python 删除一个指定的文件
要求:
必须使用函数 提示与问题拆解
a) 如何找到指定路径下的所有文件
b) 如何找到指定的文件名在指定的路径下
c) 如何删除找到的文件为新的名字
d) 使用 os 模块下的 remove()方法
'''
# 定义一个删除指定路径下指定文件的函数
def DeL_file(Dname,path):
import os
result = os.listdir(path)
for f in result:
if Dname in f and f.endswith('.txt'):# 判断文件是否在指定的路径下,有则删除之
filepath = path + '\\' + Dname + '.txt'# 文件的地址
os.remove(filepath) # 删除文件 path = r'E:\PC_job\PC_job\mylearn\code_ZZXQ\tran'
DeL_file('project11',path)

 参数的设置:

位置参数(定位参数):参数和参数值在位置和个数上严格一一对应

def myadd(a,b,c,d):
return a+b+c+d myadd(1,2,3,4)#调用的时候是一一对应的,严格对应,多一个参数少一个参数或者位置不对应全部报错

不定长位置参数(不定长定位参数):带 * 号的位置参数,位置上一一对应,但个数上不一一对应,会被转化为元组

# 不定长位置参数的使用
# 计算多个数的和
def myadd(*b):
return sum(b) myadd(15,16)
myadd(15,24,35) # 不定长位置参数和位置参数的混合使用
def myadd(parm1,*parm2):
return parm1 + sum(parm2) myadd(50,37,90)

关键字参数:定义的时候已经赋值,如下面例题的400

def myadd(a,b=400):
return a+b myadd(1)# 直接使用默认值,结果是401
myadd(1,b=7)# 修改关键字参数,结果是8

不定长的关键字参数:不定长的关键字参数有两个*,如下,会被转化为字典

# 不定长的关键字参数
def myadd(**kwargs):
print(kwargs) myadd(name='bj',tel=130) # 结果:
{'name': 'bj', 'tel': 130}

参数的综合应用:

# 不定长位置参数和不定长关键字参数的综合应用
def myfunc1(*args,**kwargs):
print(args)
for item in kwargs:
print(item) myfunc1(5,15,22,38,500,name='lucy',age=30)
# 结果:
(5, 15, 22, 38, 500)
name
age # 解包
l1 = [1,2,3,4,5,6]
# *l1 <==> a,b,c,d,e,f=l1,即将l1列表拆分分别赋值 def myfun1(*args,**kwargs):
print(args)
for item in kwargs:
print(item) dl = {'name':'david','add':'bj','data':'2018-8-1'}
l1 = [1,2,3,4,5,6,7]
myfun1(*l1,**dl)
# 结果
(1, 2, 3, 4, 5, 6, 7)
name
add
data

偏函数:固定了一部分参数的函数

# 偏函数,固定饿了部分参数的函数

# 定义一个计算汇率的函数
def mysal(nums,rate = 6.95):
return nums*rate import functools as ft
# 固定住汇率值,定义多个偏函数
rmb2eur = ft.partial(mysal,rate=1.01)
rmb2jpn = ft.partial(mysal,rate=82)
jpn2rmb = ft.partial(mysal,rate=0.06) rmb2jpn(1000)
jpn2rmb(1000)

小练习:

# 创建能根据输入计算BMI指数的函数
'''
身体质量指数(BMI)是根据人的体重和身高计算得出的一个数字,BMI是可靠的身体肥胖指标,计算公式是:BMI = Weight/High2,其中体重单位为公斤,身高单位为米
计算公式:BMI = 体重(kg)/身高²(m)
提示用户输入体重和身高数字(注意单位),然后计算BMI
根据BMI指数范围,定义当前健康状态,BMI指数在18-25之间定义为健康的标准体重,小于该范围定义为偏瘦,超过该范围定义为偏重
将BMI指数和起所代表的状态输出 '''
def BMI():
weight = int(input('请输入您的体重数字(单位是kg):'))
high = float(input('请输入您的身高数字(单位是m):'))
BMI = weight/(high**2)
if BMI < 18:
print('您的BMI指数是',BMI)
print('您的健康状态为:偏瘦')
elif BMI > 25:
print('您的BMI指数是',BMI)
print('您的健康状态为:偏重')
else:
print('您的BMI指数是',BMI)
print('您的健康状态为:健康的标准体重')
BMI()

Python基础知识之5——函数基础的更多相关文章

  1. python基础-基础知识(包括:函数递归等知识)

    老男孩 Python 基础知识练习(三) 1.列举布尔值为 False 的值空,None,0, False, ", [], {}, () 2.写函数:根据范围获取其中 3 和 7 整除的所有 ...

  2. JavaSE 基础知识(常识概念 + 基础语法)问答总结/面试题 —— 讲给应届生的 Java 开源知识项目

    写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...

  3. Redis 02: redis基础知识 + 5种数据结构 + 基础操作命令

    Redis基础知识 1).测试redis服务的性能: redis-benchmark 2).查看redis服务是否正常运行: ping 如果正常---pong 3).查看redis服务器的统计信息: ...

  4. python基础知识-day6(函数知识)

    1.函数的特点 函数式的编程范式 面向对象的编程范式 所谓函数,就是把重复的代码单独的分离出来,放在一个公共的地方,以后可以一只调用,这样就可以解决多次重复来编写. 2.函数的定义 1 def fun ...

  5. Python基础知识5-递归函数、生成器

    函数执行流程* 递归Recursion 递归的性能  递归总结 递归练习: def fac(n): if n==1: return n return n*fac(n-1) def fac1(n, f= ...

  6. python基础知识梳理-----7函数

    基本内容梳理 1:函数定义,函数名,函数体以及函数的调用方式 2:函数的返回值 3:函数的参数 4:函数---动态传参数 5:名称空间,局部名称的加载顺序,全局名称空间,作用域,加载顺序 6:函数的嵌 ...

  7. python基础知识第九篇(函数)

    函数 >>>>>>>>>>> : 使用函数的好处 1.代码重用 2.保持一致性,方便维护 3.可扩展性 定义方法 def test01 ...

  8. python基础知识-day8(函数实战)

    1 def out(): 2 username=input("请输入用户名:\n") 3 password=input("请输入密码:\n") 4 return ...

  9. C++基础知识:成员函数、对象拷贝、私有成员

    一.综述 类是我们自己定义的数据类型(新类型) 设计类时要考虑的角度: (1)站在设计和实现者的角度来考虑 (2)站在使用者的角度来考虑 (3)父类,子类 二.类基础 (1)一个类就是一个用户自己定义 ...

随机推荐

  1. Module not found: Error: Can't resolve "xxx" in "xxx"

    报错信息 ERROR in multi ./src/index.js ./dist/bundle.js Module not found: Error: Can't resolve './dist/b ...

  2. Java对图片压缩

    背景:图片上传服务器时候的大小限制取消之后,上传图片太大导致前台显示加载缓慢 需求:服务器对接收到的图片进行压缩 方法:1.上传后的文件保存在临时文件夹“/usr/upload/tmp”    2.压 ...

  3. js基本包装类型

    基本包装类型   3种特殊的引用类型 为了便于操作基本类型值,es还提供了3种特殊的引用类型: Boolean,Number,String. 每当读取一个基本类型值的时候,后台就会创建一个对应的基本包 ...

  4. 三(2)、springcloud之Eureka集群配置

    1)原理说明** 服务启动后向Eureka注册,Eureka Server会将注册信息向其他Eureka Server进行同步,当服务消费者要调用服务提供者,则向服务注册中心获取服务提供者地址,然后会 ...

  5. 净心诀---python3生成器进阶

    列表推导式 把需要用一个函数写成的小功能,利用一行表达式完成 例子: l = [1,2,3,4,5] # 所有的偶数都放到新的列表中 # 正常函数 def Lst(): li = [] for i i ...

  6. dubbo源码学习(二) : spring 自定义标签

    做dubbo的配置时很容易发现,dubbo有一套自己的标签,提供给开发者配置,其实每一个标签对应着一个 实体,在容器启动的时候,dubbo会对所有的配置进行解析然后将解析后的内容设置到实体里,最终du ...

  7. CF755G PolandBall and Many Other Balls/soj 57送饮料

    题意:长度为n的序列,相邻两个或单独一个可以划分到一个组,每个元素最多处于一个组. 问恰好分割成k(1<=k<=m)段有多少种方案? 标程: #include<bits/stdc++ ...

  8. 单源最短路径问题1 (Bellman-Ford算法)

    /*单源最短路径问题1 (Bellman-Ford算法)样例: 5 7 0 1 3 0 3 7 1 2 4 1 3 2 2 3 5 2 4 6 3 4 4 输出: [0, 3, 7, 5, 9] */ ...

  9. JUC 一 FutureTask

    java.util.concurrent public class FutureTask<V> implements RunnableFuture<V> 简介 FutureTa ...

  10. NX二次开发-UFUN返回当前图纸页的Tag函数UF_DRAW_ask_current_drawing

    除了UF_DRAW_ask_current_drawing这个函数外,用UF_DRAW_ask_drawings也可以获得tag.UF_DRAW_ask_current_drawing只能获得当前这一 ...