零基础学Python:函数精讲

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。


1. 位置参数与关键字参数

尽管这种方式很常见,但是位置参数的一个弊端是必须熟记每个位置的参数的含义。在调用函数 f()时误把最后一个参数当作第一个参数,会得到完全不同的结果:

关键字参数

为了避免位置参数带来的混乱,调用参数时可以指定对应参数的名字,甚至可以采用与函数定义不同的顺序调用:

你也可以把位置参数和关键字参数混合起来。首先,实例化参数 ,然后对参数使用关键字参数的方式:

如果同时出现两种参数形式,首先应该考虑的是位置参数。

默认参数

当调用方没有提供对应的参数值时,你可以指定默认参数值。这个听起来很普通的特性实际上特别有用,以之前的例子为例:

2.不定参数

*args

位置参数(了解)
在不清楚传入参数是多少个

无参数调用函数,则什么也不会返回:

给函数传入的所有参数都会以元组的形式返回输出:

这样的技巧对于编写像 print() 一样接受可变数量的参数的函数是非常有用的。如果你函数同时有限定的位置参数,那么 *args 会收集剩下的参数:

当使用 * 时不需要调用元组参数 args,不过这也是 Python 的一个常见做法。

**kwargs

关键字参数
使用两个星号可以将参数收集到一个字典中,参数的名字是字典的键,对应参数的值是字典的值。下面的例子定义了函数 print_kwargs(),然后打印输出它的关键字参数:

案例:

案例:假设 python 中的 print 不能一次性传入多个参数使用了,让我们自己实现 print 可以传递多个参数的功能。

要求:自己编写一个 changed_print 函数实现原本 print 的功能。
例:原本函数的功能

3. 一等公民函数

在 Python 中,函数是一等对象。编程语言理论家把“一等对象”定义为满足下述条件的程序实体:

  • 在运行时创建

  • 能赋值给变量或数据结构中的元素

  • 能作为参数传给函数

  • 能作为函数的返回结果

在 Python 中,整数、字符串和字典都是一等对象——没什么特别的。接下来的内容将重点讨论把函数作为对象的影响和实际应用。

比如说我要将之前函数修改一个名字,使用新的函数名去调用旧的函数

把函数当参数传递
案例需求 f(1) + f(2) + f(3) + f(4) + f(5)

设:求 f(1) + f(2) + f(3) + f(4) + f(5) + ...+f(N)

全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。

@拓展

函数的递归(难点)

函数的递归(难点)
函数调用自身的 编程技巧 称为递归
特点

  • 函数内部调用自己

  • 函数内部可以调用其他函数,当然在函数内部也可以调用自己

代码特点

  1. 函数内部的 代码 是相同的,只是针对 参数 不同,处理的结果不同

  2. 当 参数满足一个条件 时,函数不再执行

  • 这个非常重要,通常被称为递归的出口,否则 会出现死循环!

递归阶乘
一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积。自然数n的阶乘写作n!。
1、当n=0时,n!=0!=1
2、当n为大于0的正整数时,n!=1×2×3×…×n

示例:函数调用本身

斐波那契数列

斐波那契数列(Fibonacci sequence),又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、 8、13、21、34、……在数学上,斐波纳契数列以如下被以递推的 方法定义:F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2)(n>=3,n∈N*) 每一位数都等于前两位数之和,在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用。
1.定义一个函数 fib
2.能够接收一个 num 的整数参数
3.计算 1 + 1 + 2 + 3 + 5 + 8 ... num 的结果

第N个数是多少

提示:递归是一个 编程技巧,初次接触递归会感觉有些吃力!在处理 不确定的循环条件时,格外的有用,例如:遍历整个文件目录的结构

(0)

相关推荐

  • python到底还有哪些函数我们还没见过?原来有这么多实用的函数

    本文将将主要介绍如下内容 函数介绍 1.1 函数的定义 所谓的函数,其实就是具有特定功能的一段代码块,都可以独立的运行 . 函数有5部分组成,分别是定义函数的关键字,函数的名字,圆括号(存放函数的参数 ...

  • Python 编程别再用递归了

    递归函数使用起来非常酷,简洁优雅,可以用来炫耀编程技巧.但是,在大多数情况下,递归函数具有非常高的时间和空间复杂性,我们应该避免使用它.更好的解决方案之一是在可能的情况下使用动态规划,对于能够分解为子 ...

  • Python|递归函数之斐波那契数列

    上一期小编主要针对def函数的运用进行了简单的讲解,本期将会深入探讨def函数的另一种特别有用的函数(递归函数),其定义:如果一个函数在内部调自身,这个函数就是递归函数,递归函数的优点在于其定义简单, ...

  • PHP递归与迭代

    在 PHP 中,我们经常会遇到这样的情况:在面临一个庞大的问题时,需要把这个庞大的问题拆分成各个细小的单元,解决了每个细小单元的问题,这个庞大的问题便迎刃而解了.递归与迭代就是这种思想的体现. PHP ...

  • 零基础学python,看完这篇文章,你的python基础就差不多了!

    Python基础语法 1. 认识Python 1.1 Python 简介 Python 的创始人为吉多·范罗苏姆(Guido van Rossum). Python 的设计目标: 一门 简单直观的语言 ...

  • 零基础学Python:数值类型和运算符

    数值类型 1.int(整形) 在 Python 中定义变量是 不需要指定类型(在其他很多高级语言中都需要) 整形,也被称之为整数.整数就是数学中的数字. 整形在Python中不受长度限制大小范围 定义 ...

  • 零基础学Python:列表推导式及深浅拷贝

    列表推导式 Python里面有个很棒的语法糖(syntactic sugar),它就是 list comprehension ,有人把它翻译成"列表推导式",也有人翻译成" ...

  • 张景明教授【零基础学中医】中医讲的气到底是啥?

    张景明教授【零基础学中医】中医讲的气到底是啥?

  • 零基础练字,笔画精讲让你短期内提升你的练字水平,值得关注!

    部首也是组成汉字的基本元素,根据属性不同,部首可分为笔画部,独体字部首和合体部首. 笔画部首是以笔画做为部首 如横部"一"竖部"|"点部"," ...

  • 中老年零基础学电子琴(50讲)

    点此进入中老年网络大学 电子琴作为科技与音乐的产物,在信息化和电子化的时代,为音乐的大众化做出了不可磨灭的贡献,现代歌曲的制作,很多都需要电子琴才能完成,然后才通过媒介流传开来,电视剧电影插曲.电视节 ...

  • 建议看一下,零基础学Python都想问的6个问题

    转自:菜鸟学Python 01. Python怎么学? Python虽然号称非常简单,功能强大!但是再简单,它也是一门编程语言,任何一个编程语言都会包含: 内功,心法和招式,内功心法就是指的算法,数据 ...

  • Python零基础入门教函数

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

  • 高中数学函数解题技巧汇总,立足真题回顾考点,零基础学一遍就会

    高中数学想要考130分,函数这部分知识必须要弄懂.因为选择题,填空题和大题中都会出现函数相关题.如果你觉得函数特别难,那么下面我更新的内容你可要好好看. 想要吃透函数,必须要弄懂一下知识点: 一.了解 ...