5.1Python函数(一)

目录

  • 目录
  • 前言
  • (一)函数的基本知识
  • (二)函数的基本使用
    • ==1.函数的简单定义==
    • ==2.传值函数==
    • (3)输出效果
    • ==3.不定长函数==
    • ==4.缺省函数==
    • ==5.函数的传值过程==
    • ==6.具有返回值函数==
    • ==7.函数的使用说明==

目录

前言

分模块思想,分任务编程,是编程的一大重要思维,其中的实现,函数就担当了一个重要角色,今天我们就来学习Python的初级函数。

(一)函数的基本知识

(1)函数的优点

  1. 体积小,减少内存大小,冗余度小。
  2. 重用性强,可重复利用。
  3. 维护方便。
  4. 分解任务,简化逻辑,使代码更加模块化。

(2)函数的分类

  1. 内建函数
  2. 三方函数
  3. 自定义函数

(二)函数的基本使用

==1.函数的简单定义==

(1)语法说明

def 函数名():

? 函数体

(2)源代码

# 定义一个简单函数
def test():
    print(2**2)
    print(2**3)
    print(2**4)

# 调用函数
test()

(3)输出效果

==2.传值函数==

(1)语法说明

定义语法:

def 函数名(var1,var2,……)

? 函数体

调用的时候,有两种方式:

  1. 顺序调用,要求实参与形参一一对应。
  2. 关键字调用,可以不按照顺序调用。

(2)源代码

# 定义一个带参数的函数
def test(var1, var2):
    print(var1+var2)
    print(var1**2+var2**2)
    print(var1**3+var2**3)

# 顺序调用带参数的函数
print("顺序调用")
test(1, 2)

# 关键字调用带参数函数
print("关键调用")
test(var2=2, var1=1)

(3)输出效果

==3.不定长函数==

(1)语法说明

当形参为下面两种形式的时,为不定长参数

  1. *args --- 接收为元组类型, 只要使用星号就可以,名字没关系,习惯用args而已。
  2. **kwargs ---接收为字典类型。其传值时,必须是关键字传值。

注意:装包与拆包

  1. 装包:args与kwargs 就是表示整个元组与字典的整体,叫装包
  2. 拆包:*args 与 **kwargs 表示元组和字典的每个元素,叫拆包

(2)源代码

# 定义不定长的参数- *args 接收的是元组类型
def test1(*args):
    print(args, type(args))
    print(*args)

# 定义不定长的参数- *args 接收的是字典类型
def test2(**kwargs):
    print(kwargs, type(kwargs))
    # 输出keyword
    print(*kwargs)
    # 使用value,不能打印出来,不过可以使用
    # 而且形参与实参的keyword一样,其实就是关键字调用
    test3(**kwargs)

def test3(a, b, c):
    print(a)
    print(b)
    print(c)

# 调用参数,并接收的是 元组
test1(1, 2, 3)

# 调用参数,并接收的是 字典
test2(a="zsj", b=18, c="m")

(3)输出效果

==4.缺省函数==

(1)语法说明

在定义函数的时候,给形参赋值,就是缺省函数,所赋的值便是默认值,

def test(name="me")

而在调用的时候,可以传入参数,也可以不传入参数。

传入参数时,以所传的参数优先。

不传入参数时,为默认值。

(2)源代码

# 定义缺省参数
def test(name="zyg"):
    print(name)

# 不传入参数, 默认值
test()
# 传入参数,优先值是传入的值
test("me")

(3)输出效果

==5.函数的传值过程==

(1)语法说明

在python里函数的传值:都是==引用传递==

  1. 值传递(从实参复制一个副本)传递给形参
  2. 引用传递(直接把实参的id)传给形参

Python的可变数据类型与不可变数据类型

  1. 可变数据类型:value值改变,id值不改变。(列表,字典)
  2. 不可变类型:value值改变,id值随之改变。(数值类型,字符串类型,布尔类型,元组类型)

Python里函数是否可以改变实参内容问题

  1. 若实参是可变数据类型,则可以实参内容
  2. 若实参是不可变数据类型,则不可以实参内容

(2)可变类型的实例

# 定义一个函数,用id()来判断其是值传递,还是地址传递?

def test(num):
    print(id(num))
    num[1] = 5
    print(num)
    print(id(num))

list1 = [1, 2, 3]
print(id(list1))
test(list1)
print("最后的id", id(list1))
print("最后的值", list1)

(3)不可变类型的实例

# 定义一个函数,用id()来判断其是值传递,还是地址传递?

def test(num):
    print(id(num))
    num = 5
    print(num)
    print(id(num))

number = 1
print(id(number))
test(number)
print("最后的id", id(number))
print("最后的值", number)

==6.具有返回值函数==

(1)语法说明

当我们需要函数处理过后,返回一个结果值。可以使用

return 结果值

结果值:可以是元组类型,列表类型,拆包后的数据

(2)源代码

# 定义一个具有返回值的函数

def test(a, b):
    mysum = a + b
    mysub = a - b
    return (a, b)

n1 = 4
n2 = 2
sum_1, sub_1 = test(n1, n2)
print(sum_1)
print(sub_1)

(3)输出效果

==7.函数的使用说明==

(1)说明:

函数的说明都有一个标准的写法,才能调用help查看

def 函数名():

? """

? 功能:xxxxx

? var1:

? var2:

? ....

? return xxxx

? """

查看帮助可以用:help(函数名) ,注意是函数名,不是函数调用。

(2)源代码

# 定义一个具有返回值的函数
def test(a, b=1):
    """
        功能:该函数实现两个值的加减,并返回结果。
    :param a: 参与运算的一个值,数字类型,不可选,无默认值
    :param b: 参与运算的另一个值,数字类型,可选,默认值为1
    :return: 和与差的结果,元组类型。例如 (1, 2)
    """
    mysum = a + b
    mysub = a - b
    return (a, b)

# 查看帮助
help(test)

(3)输出效果

作者:Mark

日期:2019/02/02 周六

原文地址:https://www.cnblogs.com/zyg123/p/10348218.html

时间: 2024-07-31 03:46:42

5.1Python函数(一)的相关文章

5.2Python函数(二)

目录 目录 前言 (一)偏函数 ==1.说明== ==2.原代码== ==3.显示效果== (二)高阶函数 ==1.说明== ==2.源代码== ==3.运行效果== (三)返回值函数 ==1.说明== ==2.源代码== ==3.运行效果== (四)匿名函数 ==1.说明== ==2.源代码== ==3.运行效果== (五)闭包函数 ==1.说明== ==2.源代码== ==3.运行效果== 目录 前言 这一篇式相继上一篇5.1Python函数(一)的进阶文章. 一个重要的思想是:我们把"函数

python第四节

1.1Python函数 面向对象 面向过程 1.可读性差 2.重用性差 函数式编程 1.1.1自定义函数 看一个函数的例子:db文件内容为xuliangwei|123 def login(username,password): ''' 用于用户登陆 :param username: 用户输入用户名 :param password: 用户输入密码 :return: true,登陆成功 false,登陆失败 ''' file_name = open("db",'r') for line i

PYDay6- 内置函数、验证码、文件操作

1.内置函数 1.1Python的内置函数 abs() dict() help() min() setattr() all() dir() hex() next() slice() any() divmod() id() object() sorted() ascii() enumerate() input() oct() staticmethod() bin() eval() int() open() str() bool() exec() isinstance() ord() sum() b

函数及介绍

1.1定义一个函数 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号(). 任何传入参数和自变量必须放在圆括号中间.圆括号之间可以用于定义参数. 函数的第一行语句可以选择性地使用文档字符串-用于存放函数说明. 数内容以冒号起始,并且缩进. return [表达式] 结束函数,选择性地返回一个值给调用方.不带表达式的return相当于返回 None 1.2函数调用    定义一个函数只给了函数一个名称,指定了函数里包含的参数,和代码块结构. 这个函数的基本结构完成以后,你可以通过另一个

ptyhon之路day3-文件处理及函数1

文件处理 文件处理流程 1 打开文件,得到文件句柄并赋值给一个变量 2 通过句柄对文件进行操作 3 关闭文件 1python中操作文件 f = open('a.txt','r',encoding='gbk') #windows操作系统默认gbk编码 open是打开文件 是向操作系统发起请求来打开一个文件 f 是应用程序存到内存中 f->打开文件对应着 f.read() r模式在文件没有的时候 不会自动创建文件 b模式即直接从硬盘中读取bytes f=open('a.txt','rb') prin

第六章 函数[DDT书本学习 小甲鱼]【1】

6.1Python的乐高积木 程序分解为小的组成部分.三种方法实现:函数.对象.模块6.1.1 创建和调用函数 以前接触到的BIF就是Python帮我们封装好的函数 def 德芙 关键字: 代码如下 def myFirstFunction(): print("大家好,我是新来的1") print("大家好,我是新来的2") print("大家好,我是新来的3") myFirstFunction() 重复三次,该如何做? for i in rang

js高阶函数

map()方法定义在JavaScript的Array中,我们调用Array的map()方法,传入我们自己的函数,就得到了一个新的Array作为结果: function pow(x) { return x * x; } var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; arr.map(pow); // [1, 4, 9, 16, 25, 36, 49, 64, 81] reduce()把一个函数作用在这个Array的[x1, x2, x3...]上,这个函数必须接收两个

Django url 标签和reverse()函数的使用(转)

原文:http://www.yihaomen.com/article/python/355.htm 使用url标签和reverse()函数,可以避免在模板和view中对url进行硬编码,这样即使url改变了,对模板和view也没有影响 起初用django 开发应用的时候,完全是在urls.py 中硬编码配置地址,在views.py中HttpResponseRedirect()也是硬编码转向地址,当然在template 中也是一样了,这样带来一个问题,如果在urls.py 中修改了某个页面的地址,

Python2.7-内置函数

具体参见:https://docs.python.org/2/library/functions.html#file 1.进制转换:bin(x), oct(x), hex(x) 把一个十进制数分别转换为2.8.16进制 2.字符转换:chr(x)将数字(255以内不报错,128以后无字符)转换为对应ASCII字符, unichr(x)将数字转换为unicode, ord(x) 将字符转数字与前两个相反, unicode(obj, [encoding, [error]]) 用encoding解码o