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

时间:2022-01-15 22:45:42

一、函数是什么

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

函数能提高应用的模块性,和代码的重复利用率。比如print(),len()等。但你也可以自己创建函数,这被叫做用户自定义函数。

二、函数的定义与调用

#函数定义
def mylen():
"""计算s1的长度"""
s1 = "hello world"
length = 0
for i in s1:
length = length+1
print(length) #函数调用
mylen()

上面就是咱们写了一个函数,并且成功的调用了它。

定义:def 关键词开头,空格之后接函数名称和圆括号(),最后还有一个":"。

   def 是固定的,不能变,他就是定义函数的关键字。

   空格 为了将def关键字和函数名分开,必须空(四声),当然你可以空2格、3格或者你想空多少都行,但正常人还是空1格。

   函数名:函数名只能包含字符串、下划线和数字且不能以数字开头。虽然函数名可以随便起,但我们给函数起名字还是要尽量简短,并能表达函数功能

   括号:是必须加的!

注释:每一个函数都应该对功能和参数进行相应的说明,应该写在函数下面第一行。以增强代码的可读性。

调用:就是 函数名() 

函数是以功能为导向,函数内部尽量不要有print

三、函数的返回值

return关键字的作用

1.没有返回值

不写return的情况下,会默认返回一个None

return None   返回 None

2.返回一个值

只需在return后面写上要返回的内容即可

3.返回多个值

可以返回任意多个、任意数据类型的值

def ret_demo1():
'''返回多个值'''
return 1,2,3,4 def ret_demo2():
'''返回多个任意类型的值'''
return 1,['a','b'],3,4 ret1 = ret_demo1()
print(ret1)
ret2 = ret_demo2()
print(ret2)

返回的多个值会被组织成元组被返回,也可以用多个值来接收

def ret_demo2():
return 1,['a','b'],3,4 #返回多个值,用一个变量接收
ret2 = ret_demo2()
print(ret2) #返回多个值,用多个变量接收
a,b,c,d = ret_demo2()
print(a,b,c,d) #用多个值接收返回值:返回几个值,就用几个变量接收,必须一一对应
a,b,c,d = ret_demo2()
print(a,b,c,d) 多个返回值的接收

函数中遇到return则函数停止,不再向下进行

四,函数的参数

实参与形参

参数还有分别:

我们调用函数时传递的“hello world”被称为实际参数,因为这个是实际的要交给函数的内容,简称实参。

定义函数时的变量的名字,被称为形式参数,因为在定义函数的时候它只是一个形式,表示这里有一个参数,简称形参。 

传递多个参数

参数可以传递多个,多个参数之间用逗号分割。

def mymax(x,y):
the_max = x if x > y else y
return the_max ma = mymax(10,20)
print(ma)

位置参数

  站在实参角度

1.按照位置传值

def mymax(x,y):
#此时x=10,y=20
the_max = x if x > y else y
return the_max ma = mymax(10,20)
print(ma)

2.按照关键字传值

def mymax(x,y):
#此时x = 20,y = 10
print(x,y)
the_max = x if x > y else y
return the_max ma = mymax(y = 10,x = 20)
print(ma)

3.位置、关键字形式混着用

def mymax(x,y):
#此时x = 10,y = 20
print(x,y)
the_max = x if x > y else y
return the_max ma = mymax(10,y = 20)
print(ma)

  正确用法:

      问题一:位置参数必须在关键字参数的前面

      问题二:对于一个形参只能赋值一次

 站在形参角度

    位置参数必须传值

def mymax(x,y):
#此时x = 10,y = 20
print(x,y)
the_max = x if x > y else y
return the_max #调用mymax不传递参数
ma = mymax()
print(ma) #结果
TypeError: mymax() missing 2 required positional arguments: 'x' and 'y'

三元运算法

def leng(x,y):
z = x if x>y else y
return z
print(leng('',''))

默认参数

1.正常使用

 使用方法

 为什么要有默认参数:将变化比较小的值设置成默认参数

2.默认参数的定义

def func(name,sex='男'):
with open('name_list','a',encoding='utf-8') as f1:
f1.write('{} {}\n'.format(name,sex))
while True:
name = input('请输入名字:')
if '妹' in name:
sex = input('请输入性别:')
func(name,sex) # 混合
else:
func(name)

3.参数陷阱:默认参数是一个可变数据类型

def defult_param(a,l = []):
l.append(a)
print(l) defult_param('alex')
defult_param('egon')

 

动态参数

动态参数,也叫不定长传参,就是你需要传给函数的参数很多,不定个数,那这种情况下,你就用*args,**kwargs接收,args是元祖形式,接收除去键值对以外的所有参数,kwargs接收的只是键值对的参数,并保存在字典中。

def func(*args):
print(args,type(args)) func(1,2,'alex',3,4,5,6)
def func(**kwargs):
print(kwargs)
func(a = 1,b = 4,c = 3) #**kwargs包含了所有的关键字参数,最后将这些实参以键值对的形式放入一个字典中。放在最后。

#位置参数,*args,默认参数(放在后面,放在前面不起作用),**kwargs

万能参数

def func(*args,**kwargs):
print(args)
print(kwargs)
func(1,2,3,4,5,a = 1,b = 4,c = 3)

*魔法运算:打散。

字典:两个*打散  元组和列表:一个*打散

def trans_para(*args,**kwargs):
print(args,type(args))
print(kwargs,type(kwargs))
trans_para("jinxin",12,*[1,2,3,4],*(1,4,7),**{"a":"","c":456},country="china")

Python函数的定义与调用、返回值、参数的更多相关文章

  1. 第十一篇 Python函数之定义&形参&实参&位置参数&关键字参数&可变长参数&默认参数

    函数的定义:函数是为了完成某一特定功能的,函数是逻辑结构化和过程化的一种编程方法 函数的定义格式,函数一般都是有返回值的 #语法 #函数名要能反映其意义 def 函数名(参数1,参数2,参数3,... ...

  2. python 函数的定义及调用语法,map 方法,函数嵌套递归

    1.什么是函数    开发程序时候,需要代码执行多次,为了提高编写效率及代码重用性,所以把具有独立功能的代码块组织为一个小模块,给这个功能一个名称,这就是函数.    函数可以使用系统自带的函数也可以 ...

  3. Python函数的定义、参数传入与函数的调用

    作为计算机代码的一种抽象方式,函数在Python中扮演了极为重要的角色.今天给大家介绍Python函数的定义.参数的传入以及调用方式.其中函数参数的传入方式为本节重点内容.Python函数的参数形式包 ...

  4. day09 python函数 返回值 参数

    day09 python   一.函数     1.函数         函数是对功能的封装         语法:         定义函数:             def 函数名(形参):    ...

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

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

  6. 12&lowbar;传智播客iOS视频教程&lowbar;注释和函数的定义和调用

    OC的注释和C语言的注释一模一样.它也分单行注释和多行注释. OC程序里面当然可以定义一个函数.并且定义的方式方法和调用的方式方法和我们C语言是一模一样的.OC有什么好学的?一样还学个什么呢? 重点是 ...

  7. python-函数1(定义-作用-优势-返回值)

    python-函数1(定义-作用-优势-返回值) 1.面向对象的定义是靠-类>>class2.面向过程的定义是靠-过程 >>def3.函数式编程的定义是靠-函数>> ...

  8. js函数的定义和调用

    函数的定义 函数使用function 声明,后跟一组参数以及函数体,语法如下: function functionName([age0,age1,......argn]){ statements } ...

  9. C&num;中的函数&lpar;二&rpar; 有参有返回值的函数

    接上一篇 C#中的函数(-) 无参无返回值的函数 http://www.cnblogs.com/fzxiaoyi/p/8502613.html 这次研究下C#中的函数(二) 有参有返回值的函数 依然写 ...

随机推荐

  1. android 学习随笔二十九(自定义监听 )

    package com.itheima.momo.dialog; import com.itheima.momo.R; import android.app.AlertDialog; import a ...

  2. 开涛spring3&lpar;9&period;1&rpar; - Spring的事务 之 9&period;1 数据库事务概述

    9.1  数据库事务概述 事务首先是一系列操作组成的工作单元,该工作单元内的操作是不可分割的,即要么所有操作都做,要么所有操作都不做,这就是事务. 事务必需满足ACID(原子性.一致性.隔离性和持久性 ...

  3. js 阻止事件执行

    三种阻止事件执行的方式 event.preventDefault() event.stopPropagation() return false event.preventDefault() 阻止特定事 ...

  4. maven生成jar,运行却提示没有&OpenCurlyDoubleQuote;没有主清单属性”

    转自:http://www.jianshu.com/p/fd5bd8657852 修改pom.xml <project xmlns="http://maven.apache.org/P ...

  5. dbcp2连接池获取数据库连接Connection

    一.先来看看手工创建的方式 public static Connection getConnection() { Connection conn = null; try { Class.forName ...

  6. Pyhton 列表转字典

    1.一个list 2.两个list

  7. 1&period;Python3关于文件的操作

    1.写了一个简单的Demo,就是向txt文本写入内容,最初代码如下: file = open("D:/Users/nancy/python.txt","wb") ...

  8. zookeeper【2】集群管理

    Zookeeper 的核心是广播,这个机制保证了各个Server之间的同步.实现这个机制的协议叫做Zab协议. Zab协议有两种模式,它们分别是恢复模式(选主)和广播 模式(同步).当服务启动或者在领 ...

  9. Codeforces Round &num;311 &lpar;Div&period; 2&rpar;B&period; Pasha and Tea二分

    B. Pasha and Tea time limit per test 1 second memory limit per test 256 megabytes input standard inp ...

  10. C&num; 从串口读取数据

    最近要做系统集成,需要从串口读取数据,随学习一下相关知识: 以下是从串口读取数据 public static void Main() { SerialPort mySerialPort = new S ...