一、函数的作用:

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

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

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. Ubuntu开启远程连接

    Ubuntu开启远程连接 author:headsen chen   2017-10-13   09:47:38 个人原创,严禁转载,违者追究法律责任: apt-get update apt-get ...

  2. IPFS和竞争对手们(二)

    在上一篇<IPFS和竞争对手们(一)>的开头抱怨的IPFS的开发进度,今天才得知 MaidSafe 是从2006年起步的( )这进度也是醉了. 接上一篇,今天继续讲IPFS的竞争对手们 图 ...

  3. IE常见的兼容处理

    IE常见的兼容处理 1. 禁用IE兼容模式 为了保证IE能够使用最新渲染模式而不是兼容模式,在html文档头部应加入以下代码: <head> <meta charset=" ...

  4. JAVA 新手注意事项

    1.  System.exit(0);  强行关闭虚拟机         2.   System.out.println("*")     输出一个*并换行    (没后面的ln表 ...

  5. RACSignal的一些常用用法

    NSData + RACSupport.h @interface NSData (RACSupport) // Read the data at the URL using -[NSData init ...

  6. 【jQuery】 jQuery基础

    jQuery 之前在JS的文章中提到过,JS虽然功能全面但是仍然比较接近底层,代码写起来很麻烦,而以jQuery为代表的JS库包装了很多功能,可以让代码更加简单.接下来就来简单地记录一下我学习和所知道 ...

  7. android中include标签使用详解

    android中include标签是为了便于控件的覆用的一个很好解决方案.   但是也有一些需要注意的地方,下面是本人在项目中碰到过的一个问题,做此记录,便于以后查看.   include标签用法. ...

  8. Thinkjs关系数据库学习——查询数据

    模型提供了多种方法来查询数据: find 查询单条数据 select 查询多条数据 count 查询总条数 countSelect 分页查询数据 max 查询字段的最大值 avg 查询字段的平均值 m ...

  9. hibernate框架学习笔记3:API详解

    Configuration对象: package api; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configur ...

  10. 201621123057 《Java程序设计》第7周学习总结

    1. 本周学习总结 1.1 思维导图:Java图形界面总结 1.2 可选:使用常规方法总结其他上课内容. 2.书面作业 1. GUI中的事件处理 1.1 写出事件处理模型中最重要的几个关键词. 答: ...