函数

函数其实在日常的编码过程中,你都在使用,比如print()、input()、len()等函数,只不过这些都是python给你写好的内置函数,供你是用,内置的函数数量有限,想让python为我们做更多的事情,就需要自己设计符合的函数

1、减少重复代码

2、使程序变的可扩展

3、使程序变得易维护

开始创建函数:

创建函数之前,我们先对创建函数的语法进行了解,见下图

1、def 是关键字,不可缺少

2、函数名可以自己定义,不可缺少

3、参数:可选

4、retrun:可选

示例:

def hello():
print('hello world')

函数的调用

函数在定义完成后,自身无法进行允许,必须进行调用,比如我们把上边的函数进行执行

hello()

# 输出
hello world

函数的参数

在调用函数的时候,我们会往里面传入一些值,放在函数的括号内,这个就叫参数,比如书写如下函数:

def hello(name):
print('hello ' + name) hello('Tom')
hello('Jerry') # 输出
hello Tom
hello Jerry

1、位置参数:

位置参数就是在调用函数的时候,形参和实参一一对应,不多也不少,这就是位置参数

def calc(x, y):
print(x * y) calc(2, 3)

2、关键参数

在有的时候,我们希望在调用的时候明确,我要把实参的值赋予给谁的时候,就需要是用关键参数,这个时候,你的参数顺序可以随意更换。

def calc(x, y):
print(x * y) calc(x=2, y=3)

3、非固定参数--*args

若你的函数在定义时不确定用户想传入多少个参数,就可以使用非固定参数

def test(*args):
print(args) test('arg1', 'arg2', 'arg3') # 输出
('arg1', 'arg2', 'arg3')

4、非固定参数--**kwargs

def test(**kwargs):
print(kwargs) test(name='tom', age=18) # 输出
{'age': 18, 'name': 'tom'}

局部变量和全局变量

在被调用的函数内部使用的变量,属于局部变量,处于该函数的"局部作用域",这个时候的变量,不能被外部是用,例如:

def test():
count = 1 print(count) # 输出
NameError: name 'count' is not defined

调用全局变量

count = 1

def test():
print(count) test()

递归

递归(recursion):通俗的说,程序调用自身的编程技巧。函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。

递归特性:

1. 必须有一个明确的结束条件

2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少

3. 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)

def func(num):
if num == 1:
return 1
return num * func(num - 1) x = func(7)
print(x)

Python入门4的更多相关文章

  1. python入门简介

    Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC ...

  2. python入门学习课程推荐

    最近在学习自动化,学习过程中,越来越发现coding能力的重要性,不会coding,基本不能开展自动化测试(自动化工具只是辅助). 故:痛定思痛,先花2个星期将python基础知识学习后,再进入自动化 ...

  3. Python运算符,python入门到精通[五]

    运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算.例如:2+3,其操作数是2和3,而运算符则是“+”.在计算器语言中运算符大致可以分为5种类型:算术运算符.连接运算符.关系运算符.赋值运 ...

  4. Python基本语法[二],python入门到精通[四]

    在上一篇博客Python基本语法,python入门到精通[二]已经为大家简单介绍了一下python的基本语法,上一篇博客的基本语法只是一个预览版的,目的是让大家对python的基本语法有个大概的了解. ...

  5. Python基本语法,python入门到精通[二]

    在上一篇博客Windows搭建python开发环境,python入门到精通[一]我们已经在自己的windows电脑上搭建好了python的开发环境,这篇博客呢我就开始学习一下Python的基本语法.现 ...

  6. visual studio 2015 搭建python开发环境,python入门到精通[三]

    在上一篇博客Windows搭建python开发环境,python入门到精通[一]很多园友提到希望使用visual studio 2013/visual studio 2015 python做demo, ...

  7. python入门教程链接

    python安装 选择 2.7及以上版本 linux: 一般都自带 windows: https://www.python.org/downloads/windows/ mac os: https:/ ...

  8. Python学习【第二篇】Python入门

    Python入门 Hello World程序 在linux下创建一个叫hello.py,并输入 print("Hello World!") 然后执行命令:python hello. ...

  9. python入门练习题1

    常见python入门练习题 1.执行python脚本的两种方法 第一种:给python脚本一个可执行的权限,进入到当前存放python程序的目录,给一个x可执行权限,如:有一个homework.py文 ...

  10. Python入门版

    一.前言 陆陆续续学习Python已经近半年时间了,感觉到Python的强大之外,也深刻体会到Python的艺术.哲学.曾经的约定,到现在才兑现,其中不乏有很多懈怠,狼狈. Python入门关于Pyt ...

随机推荐

  1. Appium学习笔记(一)--安装与配置

    移动自动化测试常用工具有两个:Appium和Robotium.正好最近自己开始负责客户端的工作,初来乍到需要熟悉下环境,正好学习新的东西. 移动自动化相对web来说,原理与操作过程是一样的,通过自动化 ...

  2. google软件测试之道--读后笔记

         看完google软件测试之道,以前有认真看过一次,今天又重新看了一遍.   在google,测试人员严格区分为SET和TE.SET前期深度参与项目的开发,推动开发人员的自测,从破坏者的角度寻 ...

  3. java 接口

    1.接口的引出:发现没有继承关系的类也能共享行为 2.接口不是类,类描述对象的属性和行为,但是接口只关注实现的行为3.当我们发现有行为在多个没有继承关系的类中共享,我们要把它抽取到接口中,而不是写到父 ...

  4. 完美解决scrollView 截屏图片模糊

    UIGraphicsBeginImageContext   首先说明一下UIGraphicsBeginImageContextWithOptions 和UIGraphicsBeginImageCont ...

  5. [非原创]eclipse中一些常见svn图标的含义

    项目视图   The Package Explorer view - 已忽略版本控制的文件.可以通过Window → Preferences → Team → Ignored Resources.来忽 ...

  6. archlinux vmware一些问题

    虚拟机没法上网 sudo modprobe vmnet sudo vmware-network --start

  7. 安装ftp 服务器

    安装ftp 服务器 #yum install vsftp 安装ftp 客户端 重启ftp服务器 sudo /etc/init.d/vsftpd restart /start /stop 进行ARM 和 ...

  8. C的文件操作2

    [转] C语言文件操作  概述 所谓文件(file)一般指存储在外部介质上数据的集合,比如我们经常使用的mp3.mp4.txt.bmp.jpg.exe.rmvb等等.这些文件各有各的用途,我们通常将它 ...

  9. [马哥学习笔记]Linux系统裁剪之制作带网络功能的可启动linux

    知识基础: 系统启动流程:POST-->BIOS(boot sequence)-->GRUB(bootloder(stage1:MBR;stage2:grub目录中))-->kern ...

  10. java代码

    io的使用 package com.tan.io; import java.io.*; import java.util.*; class Employee{ private String name; ...