一、函数的作用:

提高代码的可读性,减少代码的冗余,方便调用和修改,组织结构清晰

二、函数的定义:函数遵循先定义后调用的原则

1、无参函数

def funcname():   #def 是关键字,后跟函数名():
子代码 #函数要执行的代码
return #return返回值,没有时默认为none

2、有参函数

def funcname(参数1,参数2):  #参数个数可以为一个和多个
函数体
return

三、函数参数分类

def func(x,y):
res=x+y
return res f=func(1,2)
print(f)

形式参数:定义函数时的参数,本质就是变量名,上例中的x,y就是形式参数

实际参数:执行函数时的参数,本质就是变量的值,实参必须有一个明确的值,上例中的1,2就是实际参数

一)、实际参数:

1、按照位置传递给相应的参数
def func(x,y):
res=x+y
return res f=func(1,2)
print(f)
2、按照关键字传值,将不再受位置的限制
def func(x,y):
res = x+y
return res func(y=2,x=1)
3、按位置传值和按照关键字传值混用
1)按位置传值必须在关键字传值的前面
2)对于一个形参只能赋值一次

二)、形式参数:

1、位置参数:必须传值的参数
2、默认参数:定义时赋值的参数就是默认参数,默认参数必须放在位置参数的后面,有默认参数时,可以不传递参数
3、*args:动态参数,一个*时可以随意传递位置参数,打印结果是把参数作为一个元组输出
def f1(*a):
print(a, type(a)) f1(123, 456, 789, [1, 2, 43]) 打印结果
(123, 456, 789, [1, 2, 43]) <class 'tuple'>
4、动态参数**,传参时必须key,value的形式传递,最后会生成一个字典的形式
def f2(**a):
print(a, type(a))
f2(k1=123, k2=456) 打印结果为
{'k1': 123, 'k2': 456} <class 'dict'>
5、可以同时接受单个参数和key/value参数
def f3(*a, **aa):   #会把所有的位置参数作为一个元组,key/value参数作为一个字典
print(a, type(a))
print(aa, type(aa))
f3(11, 22, 33, k1=123, k2=456) 打印结果为
(11, 22, 33) <class 'tuple'>
{'k2': 456, 'k1': 123} <class 'dict'>
6、把列表,元组,字典传入函数
def f4(*args):
print(args, type(args))
li = [11, 22, 33, 44]
f4(li, 123) # 直接列表的名字,会把列表当做一整个元素当做函数生成后的元组的一个元素
f4(*li) # 使用*列表,会把列表内的每个元素当做函数生成后的元组的每个元素,类似于循环生成元组,元组列表类似 打印结果为
([11, 22, 33, 44], 123) <class 'tuple'>
(11, 22, 33, 44) <class 'tuple'>
7、把字典传入函数
def f5(**kwargs):
print(kwargs, type(kwargs))
dic = {"k1": 123}
f5(**dic) # 将字典传入到函数,需要使用双星号(**) 打印结果为
{'k1': 123} <class 'dict'>
8、混合使用
def f6(x, *args, **kwargs):
print(x)
print(args)
print(kwargs)
f6(1, 2, 3, 4, 5, k="a", v="z") 打印结果为
1
(2, 3, 4, 5)
{'v': 'z', 'k': 'a'}

总结:形式参数的传入顺序: 位置参数-----*args-----**kwargs----默认参数

四、函数的调用和返回值

函数的返回值是return,函数不加return时默认的返回值是None,return可以返回任意值,也可以多个值,return后不跟参数默认返回的是None
def func(x,y):
print(x,y)
res=x+y
return res f=func(1,2) #函数遵循先定义后调用原则,函数的调用就是func(1,2) 函数名加(),函数的执行结果,需要在调用时赋值给变量,然后print
print(f) 执行结果为
1 2 #函数执行时内部代码的执行结果
3 #3即为函数的执行结果,函数的执行结果是返回给函数本身的

Python基础--函数的定义和调用的更多相关文章

  1. python基础----函数的定义和调用、return语句、变量作用域、传参、函数嵌套、函数对象、闭包、递归函数

    1.函数的定义: 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可 ...

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

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

  3. python中函数的定义与调用

    1.为什么要用函数? (1)代码重复太多(2)可读性差 使用函数的好处: (1)代码重用 (2)保持一致性,易维护 (2)可扩展性 2.初始函数定义与调用     函数的定义 def test(x): ...

  4. python第六天函数,定义、调用、不带参函数、带参函数等

    在python定义函数需要用到的关键字是 def  xxxx():,这个关键字就是 defined 的缩写.具体看实例: >>> def hello(): print("你 ...

  5. python中函数的定义,调用,全局变量,局部变量,函数的嵌套使用-初级篇

    函数的基本概述 在学习函数之前,一直遵循:面向过程编程,即:根据业务逻辑从上到下实现功能,可以思考一下如果有某个功能的代码是在多个地方使用的是否可以只写一次?此时的代码该如何定义.先观察以下的案例: ...

  6. Python中函数的定义必须在调用的前面

    # -*- coding:utf-8 -*- Python中函数的定义必须在调用的前面,但是在函数的内部调用一个函数,不用考虑顺序,只要被调用的函数被定义了即可 #标准的先函数定义,后函数调用def ...

  7. Python函数的定义与调用、返回值、参数

    一.函数是什么 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.比如print(),len()等.但你也可以自己创建函数,这被叫做用户自 ...

  8. Kotlin基础(二)函数的定义与调用

    函数的定义与调用 一.预备知识:在Kotlin中创建集合 fun main(args: Array<String>) { //Kotlin中定义各自集合 val ,,,) val list ...

  9. python基础——函数的参数

    python基础——函数的参数 定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复 ...

随机推荐

  1. 你学会UI设计了吗?

    你学会UI设计了吗? UI设计师如何前驱? 关于产品 作为一个UI设计师,我们还在干巴巴的等着产品经理甚至交互提供的需求和原型再开始动手吗?这样被动的工作是永远无法提升自己的,当然你也永远只能拿到几千 ...

  2. javascript中的Promise使用

    参考自: http://m.jb51.net/article/102642.htm 1.基本用法: (1).首先我们new一个Promise,将Promise实例化 (2).然后在实例化的promis ...

  3. 笔记:Struts2 拦截器

    配置拦截器 Struts.xml 配置文件中,使用<interceptor-/>来定义拦截器,有属性 name 表示拦截器的名称,class 表示拦截器的具体首先类,可以使用<par ...

  4. ASUS T100TA 换屏要记

    建议完整阅读后再执行操作! 参考: [图片]华硕T100换触摸屏详细教程,全网第一发[平板电脑吧]_百度贴吧 [图片]我是这么修T100的……换外屏[win8平板吧]_百度贴吧 淘宝信息: 选择适用型 ...

  5. 【windows】 配置一个本地的tomcat服务器

    配置tomcat 公司的许多业务都是用java+tomcat模式的,做本地测试的时候经常要搭建一个自己的tomcat服务器.整个操作不难,但是记录一下,万一以后遇到什么问题也可以放这里. ■ 安装ja ...

  6. 微信公众号支付JSAPI网页,total_fee错误不正确,header重定向参数丢失,无法获取订单号和金额解决

    微信公众号支付官方demo错误, 公众号支付只能用在微信里,也就是微信内部浏览器. 1.到WxPayHubHelper.php文件 JsApi_pub()类下createOauthUrlForCode ...

  7. python scrapy框架爬虫遇到301

    1.什么是状态码301 301 Moved Permanently(永久重定向) 被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个URI之一.如果可能,拥有链接编 ...

  8. RTMP规范协议

    本文参照rtmp协议英文版,进行简单的协议分析 1.什么是RTMP 关于 Adobe 的实时消息协议(Real Time Messaging Protocol,RTMP),是一种多媒体的复用和分组的应 ...

  9. 高级软件工程2017第3次作业——结对项目:四则运算题目生成程序(基于GUI)

    Deadline:2017-10-11(周三)21:00pm (注:以下内容参考集大作业 ) 前言 想过和别人一起探索世界吗?多么希望,遇到困难时,有人能一起探讨:想要懈怠时,有人推你一把:当你专注于 ...

  10. win7开启wifi

    在启用本地共享连接时,出现的错误! 我已经建了一个无线临时网络,来启用共享用来上网的!Internet连接共享访问被启用时,出现了一个错误(null)?而且这错误也会在系统日志里留下记录,都是些莫名其 ...