一、定义一个求二元一次方程的根的函数

#Sublime Text
import math
def ee(a,b,c):
delta=b*b-4*a*c
if delta<0:
return 'null'
else:
m=math.sqrt(delta)
nx=(-b+m)/2/a
ny=(-b-m)/2/a
return nx,ny
#python解释器
>>> from hello import ee #声明调用py文件中所定义的函数ee
>>> ee(1,0,9)
'null'
>>> ee(1,0,-9)
(3.0, -3.0)

二、函数的参数

函数的参数共有5类:位置参数、默认参数、可变参数、关键字参数、命名关键字参数

位置参数:

def pow(x):
return x*x #求x的平方 def pow(x,n):
if n==0:
return 1
if n==1:
return x
return x*pow(x,n-1) #求x的任意次方

默认参数:

#默认求x平方
def pow(x,n=2):
if n==0:
return 1
if n==1:
return x
return x*pow(x,n-1) >>> from hello import pow
>>> pow(5)
25
>>> pow(5,3)
125
>>> pow(5,0)
1
#幼儿园新生等级,默认新生年龄为6,城市为ZZ
def sign_in(name,gender,Age=6,city='ZZ'):
print(name,gender,Age,city) >>> sign_in('jiaxinwei','boy')
jiaxinwei boy 6 ZZ
>>> sign_in('jiaxinwei','boy',city='NY')
jiaxinwei boy 6 NY

使用默认参数一个很大的坑:

解释:Python函数在定义的时候,默认参数L的值就被计算出来了,即[ ] , 因为默认参数 L 也是一个变量,它指向对象[ ],每次调用该函数,如果改变了L的内容,则下次调用时,默认参数的内容就变了,不再是函数定义时的[ ]了。

定义默认参数要牢记一点:默认参数必须指向不变对象(tuple,None,str)!!!

可变参数

可变参数顾名思义就是传入参数的个数是可变的,可以是任意多个

def calc(*nums):
sum=0
for n in nums:
sum=sum+n*n
return sum >>> a=[1,2,3,4]
>>> calc(*a)
30
>>> calc(1,2,3,4)
30
>>> calc(a)

关键字参数

def person(name,age,**kw):
print('name:',name,'age:',age,'other:',kw)
#其中name,age是必选参数,kw是关键字参数。在调用该函数时,可以只传入必选参数,也可以传入任意个关键字参数,关键字参数在函数内部自动组装为一个dict。
>>> from hello import person
>>> person('jiaxinwei',8) #
name: jiaxinwei age: 8 other: {}
>>> person('jiaxinwei',8,city='NY',gender='M') #
name: jiaxinwei age: 8 other: {'city': 'NY', 'gender': 'M'}
>>> extra={'city':'Beijing','job':'Student'} #
>>> person('jack',24,**extra)
name: jack age: 24 other: {'city': 'Beijing', 'job': 'Student'}

关键字参数的作用:是想你正在做一个用户注册的功能,除了用户名和年龄是必填项外,其他都是可选项,利用关键字参数来定义这个函数就能满足注册的需求。

命名关键字参数

如果要限制关键字参数的名字,就可以用命名关键字参数(不是很理解这句话)

def person(name, age, *, city, job):
print(name, age, city, job)
# *号前面的是必选参数,后面的是命名关键字参数
#如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个分隔符了
def person(name,age,*args,city,job):
print(name,age,args,city,job)
#命名关键字函数可以有缺省值
def person(name,age,*,city='Beijing',job='student'):
print(name,age,city,job) >>> from hello import person
>>> person('jiaxinwei',11)
jiaxinwei 11 Beijing student

现在还不知道命名关键字函数在什么情况下使用,先mark,后补实例~

参数组合

在python中定义函数,可以混用各种参数,不过参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数、关键字参数。

所以对于任意函数,都可以通过类似 func(*args,**kw) 的形式调用它,无论它的参数是如何定义的。

虽然可以组合多达五种参数,但不要同时使用太多的组合,否则函数接口的可理解性很差。

编写程序:接收任意多数并计算乘积

def product(*nums):
if len(nums)==0:
sum=0
else:
sum=1
for x in nums:
sum*=x
return sum >>> from hello import product
>>> product()
0
>>> product(5)
5
>>> product(5,6,7)
210
>>> product(5,6,7,9)
1890

Python基础笔记:函数:调用函数、定义函数、函数的参数、递归函数的更多相关文章

  1. Python学习笔记 - function调用和定义

    调用函数: #!/usr/bin/env python3 # -*- coding: utf-8 -*- # 函数调用 >>> abs(100) 100 >>> a ...

  2. python学习笔记(十二)之函数

    牛刀小试: 定义一个无参函数 >>> def myFirstFunc(): ... print("Hello python") ... print("h ...

  3. Python基础笔记系列十一:标准输入输出、文件读写和指针等操作

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 标准输入输出一.输入 在sublime中这个时候需要安装SublimeRE ...

  4. 『Python基础-3』变量、定义变量、变量类型、关键字Python基础-3』变量、定义变量、变量类型、关键字

    『Python基础-3』变量.定义变量.变量类型.关键字 目录: 1.Python变量.变量的命名 2.变量的类型(Python数据类型) 3.Python关键字 1. Python 变量.变量的命名 ...

  5. Python基础笔记系列一:基本工具与表达式

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 工具基础(Windows系统下)传送门:Python基础笔记系列四:工具的 ...

  6. Python基础笔记系列九:变量、自定义函数以及局部变量和全局变量

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 变量在前面的系列中也许就可以发现,python中的变量和C中的变量有些许不 ...

  7. PYTHON 学习笔记2 流程控制工具以及函数定义、匿名函数

    前言 在上一节的学习中.已经介绍了几种基本类型.包括字符串的定义,以及字符串中索引.切片.字符串拼接的使用方法.以及基本的整形数据运算.一些之前都没有了解过的运算符.比如 ** 乘方 //整数除法等. ...

  8. 【python基础语法】多重循环嵌套,函数(第6天课堂笔记)

    1.什么是函数?函数有什么作用? 函数都是有特定功能的,都是由一些有特定功能的进行封装完成的 2.已经学过了哪些内置函数?分别有什么作用? print:输出 input:输入 type:查询数据类型 ...

  9. Python基础笔记:函数式编程:高阶函数、返回函数、匿名函数

    高阶函数 高阶函数:一个函数可以接收另一个函数作为参数 或 一个函数可以返回一个函数作为返回值,这种函数称之为高阶函数. #函数 add 接收 f 函数作为参数 >>> def ad ...

随机推荐

  1. A way to use NAT network by using Oracle virtualBox

    That is true. Vmware  is easy and confortable tools to make vitrual machines than Oracle virtual box ...

  2. 设计模式课程 设计模式精讲 8-2 单例设计模式-懒汉式及多线程Debug实战

    1 主要内容 1.1 多线程debug 1.2 synchronized同步锁的调用 1.3 懒加载的应用 2 代码演练 2.1 单线程调用 2.2 多线程调用 2.3 锁的调用 1 主要内容 1.1 ...

  3. 认识iOS系统架构

    关于本文: 文章主要介绍iOS系统架构中的四层结构的内容.常用的框架.大致的功能,然后对iOS开发人员的发展提出自己的一些拙见. 一.iOS系统是基于UNIX系统,所有从系统稳定性上来说的确比其他操作 ...

  4. python 爬虫原理

    简单来说互联网是由一个个站点和网络组成的大网,我们通过浏览器访问站点,站点把HTML.JS.CSS代码返回给浏览器,这些代码经过浏览器解析.渲染,将丰富多彩的网页呈现我们眼前: 一.爬虫是什么? 如果 ...

  5. zabbix监控 -mysql数据库

    1.禁用安装防护[root@mysql213 ~]# vi /etc/selinux/config #关闭安装 SELINUX=disabled 2.授权zabbix监控账号 mysql -uroot ...

  6. leetcode刷题-- 1. 双指针

    这里的题是根据 CS-Notes里的顺序来一步步复习. 双指针 165两数之和 II - 输入有序数组 题目描述 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返 ...

  7. python之闭包,装饰器

    目录 函数对象 :相当于变量名 函数对象的作用: 1. 可以引用 2. 可以作为函数的返回值 3. 可以作为容器的元素 4. 可以作为函数的参数 闭包 定义: 如果在一个函数的内部定义了另一个函数,外 ...

  8. @@trancount什么意思(重要)

    @@trancount什么意思 https://www.cnblogs.com/monian/archive/2012/08/24/2654392.html 在处理事务的时候,一般都用RollBack ...

  9. 【Python基础知识】【语法】【入门】

    一.Python概述 Python是一门面向对象的编程语言,拥有强大丰富的库,没有操作系统的限制,是一种优美.清晰的编程语言. 二.Python基础语法 1.Python标识符 标识符就是程序中定义的 ...

  10. linux环境下查看tomcat日志

    1.先切换到:cd usr/local/tomcat5/logs 2.tail -f catalina.out 3.这样运行时就可以实时查看运行日志 Ctrl+c 是退出tail命令. alt+E+R ...