函数的定义

python定义函数使用def关键字

return[表达式]语句用于退出函数,选择性的向调用方返回一个表达式,不带参数值的return语句返回none

def 函数名(参数列表):
函数体
def get_money_fromATM(cardno,password,money):
#密码要求是6位字符串类型
if type(password) is str and len(password)==6:
print('密码正确')
else:
print('密码格式错误')
#金额小于3000元的能被100整除的整数
if type(money) is int :
if money%100==0 and money<=3000:
print('金额正确')
else:
print('金额格式错误,请重新输入') get_money_fromATM(12412412412,'',2300) #运行结果
密码正确
金额正确
#计算面积的函数
def z(x,y):
i=x*y
print(i) z(2,7) #运行结果:
14

def sum(x,y):
z=x+y
print('函数内',z) #调用的函数中没有return表达式
z=sum(5,9)
print('函数外',z) #运行结果
函数内 14
函数外 None
def sum(x,y):
z=x+y
print('函数内',z)
return z #调用的函数中没有return表达式
z=sum(5,9)
print('函数外',z) #运行结果
函数内 14
函数外 14

可变参数

def sum(*lst): 参数前面加一个星号,表示这个参数是可变的,也就是说可以接受多个参数,将这些参数构成一个元组,只能通过为止参数传参

可变参数有两种形式:

  • 位置可变参数 : 参数前加一个星号,参数构成一个元组,参数只能以 位置参数 的形式传参
  • 关键字可变参数 : 参数前加两个星号,参数构成一个字典,参数只能以 关键字参数 的形式传参

当默认参数和可变参数一起出现的时候,默认参数相当于普通参数

通常来说:

  • 默认参数靠后
  • 可变参数靠后
  • 默认参数和可变参数不同时出现

keyword-only: 必须以Key->Value对的形式出现的,叫做keyword-only

参数的传递

 传递不可变对象实例

def jiaohuan(m,n):
temp=m
m=n
n=temp
return a=2
b=3
print(a,b)
jiaohuan(a,b)
print(a,b) #运行结果
2 3
2 3

调用函数时可使用的正式参数类型:必需参数、关键字参数、默认参数、不定长参数

必需参数

  必需参数须以正确的顺序传入函数。调用时的数量不须和声明时的一样

  调用printme函数,必须传入一个参数,不然会出现语法错误

def printme(str):
"打印任何传入的字符串"
print(str) printme("调用printme函数") #运行结果
调用printme函数

关键字参数

  关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值

  使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为python解释器能够用参数名匹配参数值

def printme(str):
"打印任何传入的字符串"
print(str) printme(str="调用printme函数") #运行结果
调用printme函数

参数的默认值

def inc(base,x=1): 给第二个参数设置一个默认值,若是不传递参数,则使用默认的参数值,若是传递参数,则使用传递的参数值

默认参数

  调用函数时,如果没有传递参数,则会使用默认参数,默认参数只能放在参数列表的最后一个,但可以有多个默认参数

def sum(name,age=50):
print(name,age) name='白云'
age=45
sum(name,age) #运行结果
白云 45

不定长参数

  你可能需要一个函数能处理比当初声明时更多的参数,这些参数叫做不定长参数,声明时不会命名

  加了星号的变量名会存放所有未命名的变量参数。如果在函数调用时没有指定参数,它就是一个空元组,我们也可以不向函数传递未命名的变量

def printinfo(str,*varchar):
'打印任何输入的字符串'
print('输出:')
print(str)
for var in varchar:
print(var) #调用函数printinfo
printinfo(10)
printinfo(70,60,50,40,30) #运行结果
输出:
10
输出:
70
60
50
40
30

匿名函数

python使用laabda来创建匿名函数

所谓匿名,即不再使用def语句这样标准的形式定义一个函数

sum=lambda x,y:x+y

print(sum(1,2))

#运行结果
3
 

python函数基础(函数的定义和调用)的更多相关文章

  1. python函数:函数使用原则、定义与调用形式

    一.函数初始 二.函数的使用原则 三.函数的定义与调用形式 四.函数的返回值 五.函数参数的使用 一.函数初始 # 须知一: # 硬盘空间无法修改,硬盘中的数据更新都是用新的内容覆盖旧的内容 # 内存 ...

  2. 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数

    [源码下载] 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数 作者:webabcd 介绍速战速决 之 PHP 函数基础 函数参数 函 ...

  3. Python函数基础-函数调用,定义,参数,递归

    Python内置了很多函数供调用,eg 求绝对值函数abs() >>>abs(-1) 1 >>>abs(1) 求和函数sum(),sum(iterable,star ...

  4. Python学习---基础函数的学习

    1.1. 基础函数 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可. 灌输一个概念:Python中函数就是对象,函数和我们之前的[1,2,3],'abc ...

  5. Python编程基础[函数和面向对象](三)

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

  6. python语法基础-函数-内置函数和匿名函数-长期维护

    ##################     内置函数        #######################  """ 一共是 68个内置函数: 反射相关的内置函 ...

  7. python语法基础-函数-进阶-长期维护

    ###############    函数的命名空间和作用域    ############## """ # 函数进阶 命名空间和作用域 命名空间 全局命名空间——我们自 ...

  8. JS中函数的本质,定义、调用,以及函数的参数和返回值

    要用面向对象的方式去编程,而不要用面向过程的方式去编程 对象是各种类型的数据的集合,可以是数字.字符串.数组.函数.对象…… 对象中的内容以键值对方式进行存储 对象要赋值给一个变量 var cat={ ...

  9. java基础:方法的定义和调用详细介绍,方法同时获取数组最大值和最小值,比较两个数组,数组交换最大最小值,附练习案列

    1. 方法概述 1.1 方法的概念 方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集 注意: 方法必须先创建才可以使用,该过程成为方法定义 方法创建后并不是直接可 ...

  10. Python函数基础学习(定义、函数参数、递归函数)

    1.本程序是测试函数的基础.函数的参数.递归函数的测试. 函数的参数有: 必选参数.默认参数.可变参数.命名关键字参数和关键字参数 #!/usr/bin/python # -*- coding: ut ...

随机推荐

  1. IDEA使用的JDK版本1.9换成1.8后,在IDEA中需要改的配置

    今天上午上课spring5使用注解方式的时候,发现jdk9不兼容,果断换jdk8 步骤如下 一.查看Project中的jdk 1.检查Project SDK:中jdk 版本是否为1.8版本 2.检查P ...

  2. Redis缓存数据库常见操作

    Jedis的最为常见的操作.主要包括常用的列表(list).集合(set).有序集合(sorted set).哈希表(hash)等数据结构,以及其他特性支持. 参考资料:http://hello-ni ...

  3. delphi Sqlite

    Delphi中SQLite如何读写二进制字段(Blob类型) 在Delphi中,有大量的组件可以操作SQLite数据库,如UniDAC就是其中一个比较优秀的,当然还有ASQLite3Component ...

  4. c++ 枚举简单举例

    #include <iostream> enum Enumeration{ VAL1, VAL2, VAL3=100, VAL4 }; int main() { using namespa ...

  5. Lvs+keepalived+mysql(主从复制)

    1.准备环境 操作系统:centos 6.5 2台机器主机名为node53.node54     Mysql Lvs keepalived node2 Y Y Y node3 Y Y Y       ...

  6. [转]C# JSON格式的字符串读取到类中

    将JSON格式的字符串读取到类中 本例中建立JSON格式的字符串json,将其内容读取到Person类中 运行本代码需要添加引用动态库Newtonsoft.Json 程序代码: using Syste ...

  7. C/S通信

    一直在考虑写一个服务端和客户端通信的框架,就现在的需求,打算走http协议. 通信方式打算用Key/Value的形式. 这里面其实还是有很多的问题的,这样的一个通信框架其实是SOA的一部分.其他 但是 ...

  8. python子线程退出

    def thread_func(): while True: #do something #do something #do something t=threading.Thread(target = ...

  9. 【ARC072E】Alice in linear land

    题目 瑟瑟发抖,这竟然只是个蓝题 题意大概就是初始在\(0\),要到坐标为\(D\)的地方去,有\(n\)条指令,第\(i\)条为\(d_i\).当收到一条指令\(x\)后,如果向\(D\)方向走\( ...

  10. D3.js比例尺 定量比例尺 之 线性比例尺(v3版本)

    定量比例尺 : 数学上有函数的概念,不是编程中所说的函数,如线性函数.指数函数.对数函数等,而指的是一个量随着另一个量的变化而变化.例如有一下线性函数 : y=2x+1该函数在二维坐标系中绘制出来的图 ...