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

函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。


定义一个函数

你可以定义一个由自己想要功能的函数,以下是简单的规则:

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

语法

Python 定义函数使用 def 关键字,一般格式如下:

def 函数名(参数列表):
函数体

默认情况下,参数值和参数名称是按函数声明中定义的顺序匹配起来的。

特性

1、函数必须调用才会执行,调用函数需要写函数名及()

2、函数的返回值,函数需要结果的时候要return

3、函数里面只要遇到return,函数立即结束,后面代码不再执行

4、形参:函数完成其工作所需的一项信息,如 def user(username),username为形参

5、实参:调用函数时传递给函数的信息,我们调用函数时,要将函数使用的信息放在括号内,如 user('linda'),'linda'为实参;

举例

1、关于函数的例子:判断输入数字的是否是小数

S =input("请输入数字:")
def is_float(num):
num = str(num)
if num.count('.') == 1:
left,right = num.split('.')
if left.isdigit() and right.isdigit():
print("是正小数")
elif left.count('-') == 1 and left.startswith('-') and left[1:].isdigit():
       #left.count('-1')可以省略不写,因为后面的判断已经可以包含此情况
print("是负小数")
else:
print("非法小数")
else:
print("不是小数") is_float(S)
#调用函数
is_float(1.5) #是正小数
is_float(-23.2) #是负小数
is_float('-R.5')#非法小数
is_float('-1.3.2')#不是小数
is_float(35)#不是小数
def is_float(num):
num =str(num)
if num.startswith('-') and num.count('-') == 1:#判断是否以负号开头
num = num.replace('-','')#若是,则将负号替换为空
if num.count('.') == 1 and num[:1]!='.' and num[-1:]!='.':#判断是否包含1个小数点,且开头结尾都不是小数点
num =num.replace('.','')#若是,则将小数点替换为空
if num.isdigit():#判断是否是整数
print('xiaoshu')
return True
return False
print(is_float(1.)) #打印结果为True
print(is_float('1.'))#打印结果为False
print(str(1.))#打印结果为1.0

2、关于返回值的例子:

#加法的例子
def calc(a,b):
result = a + b
print("result:",result)
return result
calc(1,1) #打印结果为 result:2
print("结果是:",calc(2,2))#打印结果为 result:4 结果是:4
#判断输入的用户名是否在文件内
def write_file(filename,content):
with open(filename,'w',encoding='utf-8') as fw:
fw.write(content) def read_file(filename):
with open(filename,encoding='utf-8') as fr:
return fr.read() write_file('smh','user1')
print(read_file('smh'))
user = input("username:")
if user in read_file('smh'):
print("exist")
else:
print("not exist")
#判断是否为小数
#return作用:1、把数据返回;2、结束函数
def is_float(s):
s = str(s)
if s.count('.') == 1:
left,right =s.split('.') #1.74 ['1','74']
if left.isdigit() and right.isdigit():
return True
elif left.startswith('-') and left[1:].isdigit() and right.isdigit():
return True
return False

3、关于多个返回值的例子

def more():
name = 'xiaohei'
age = 18
score =37.5
return name,age,score result = more()
print(result)#返回的为元组,('xiaohei', 18, 37.5)
print(type(more()))#<class 'tuple'>
mingzi,nianling,chengji = more()#函数里定义里几个,就用几个来接收
print(mingzi)#打印结果为:xiaohei
print(nianling)#打印结果为18
print(chengji)#打印结果为37.5

4、关于默认值的例子

#函数越短越好,一个函数只实现一个功能,比较直观
def register(name,sex='女'):
print("[%s %s]写入数据库"%(name,sex))
register('liela')#打印结果为:[liela 女]写入数据库
register('london','男')#打印结果为:[london 男]写入数据库 def register1(name,sex='女'):
s = "[%s %s]写入数据库"%(name,sex)
return s
print(register1('Anglababy','lady'))#打印结果为:[Anglababy lady]写入数据库

5、关于打开、读取文件的例子

#一个既能读又能写文件的函数
def op_file(file_name,content=None):
if content: # 有content,写文件
with open(file_name,'w',encoding='utf-8') as fw:
fw.write(content)
else:
with open(file_name,encoding='utf-8') as fr:
return fr.read() result = op_file('users')
print(result)
op_file('user2.txt','xiaoming')
#操作json
import json
def op_file_json(file_name,dic=None):
if dic: # 有content,写文件
with open(file_name,'w',encoding='utf-8') as fw:
json.dump(dic,fw)
else:
with open(file_name,encoding='utf-8') as fr:
return json.load(fr)

Python 函数 day3的更多相关文章

  1. Python函数Day3

    一.函数名的应用 函数名类似于特殊的变量,打印函数名就是打印函数的内存地址 ① 函数名就是函数的内存地址 def func(): pass >>>func <function ...

  2. python 函数之day3

    一 函数的语法及特性 什么是函数? 定义:函数是一个功能通过一组语句的集合,由名字(函数名)将其封装起来的代码块,要想执行这个函数,只要调用其函数名即可. 特性: 减少重复代码 使程序变的可扩展 使程 ...

  3. python笔记 - day3

    python笔记 - day3 参考:http://www.cnblogs.com/wupeiqi/articles/5453708.html set特性: 1.无序 2.不重复 3.可嵌套 函数: ...

  4. python s12 day3

    python s12 day3   深浅拷贝 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...

  5. Python函数作用域的查找顺序

    函数作用域的LEGB顺序 1.什么是LEGB? L:local 函数内部作用域 E:enclosing 函数内部与内嵌函数之间 G:global 全局作用域 B:build-in 内置作用域 2.它们 ...

  6. Python函数讲解

    Python函数

  7. Python函数信息

    Python函数func的信息可以通过func.func_*和func.func_code来获取 一.先看看它们的应用吧: 1.获取原函数名称: 1 >>> def yes():pa ...

  8. Python函数参数默认值的陷阱和原理深究"

    本文将介绍使用mutable对象作为Python函数参数默认值潜在的危害,以及其实现原理和设计目的 本博客已经迁移至: http://cenalulu.github.io/ 本篇博文已经迁移,阅读全文 ...

  9. Python开发【第四章】:Python函数剖析

    一.Python函数剖析 1.函数的调用顺序 #!/usr/bin/env python # -*- coding:utf-8 -*- #-Author-Lian #函数错误的调用方式 def fun ...

随机推荐

  1. URAL 2031. Overturned Numbers (枚举)

    2031. Overturned Numbers Time limit: 1.0 second Memory limit: 64 MB Little Pierre was surfing the In ...

  2. 设计模式(一)单例模式:创建模式 ASPNET CORE WEB 应用程序的启动 当项目中 没有STARTUP.CS 类如何设置启动 配置等等

    设计模式(一)单例模式:创建模式 先聊一下关于设计的几个原则(1)单一原则(SRP):一个类应该仅有一个引起它变化的原因 :意思就是 (一个类,最好只负责一件事情,并且只有一个引起它变化的原因(2)开 ...

  3. Java大数练习第二弹

    hdu1250 水题 题目链接:pid=1250">http://acm.hdu.edu.cn/showproblem.php?pid=1250 import java.util.*; ...

  4. 删除svn

    去掉文件下所有的.svn - CSDN博客  https://blog.csdn.net/arui_email/article/details/9055645 FOR /r  D:\testsvn\p ...

  5. 51nod 1406 与查询

    垃圾选手练dp 考虑对于一个数,能够把它表示出来也一定可以把它某些1的位变成0变成的数表示出来 那么用大的数更新小的,容易想到每次都把这个大的数的1个1的位变成0 但是这样还是会有重复的情况 比如10 ...

  6. sql server数据库添加记录

    转自:http://jingyan.baidu.com/article/f25ef254449a9a482c1b8293.html

  7. Map类型介绍与遍历

    声明:本文非原创: 在程序员开发过程中,Map有着利用率占比是非常高:很多时间我们只知其用,不知其理:写这个随笔的目的也是希望对伙伴们对Map的理解有一点帮助. 类型介绍 java自带各种Map类.统 ...

  8. P1462 通往奥格瑞玛的道路(二分答案+最短路)

    P1462 通往奥格瑞玛的道路 题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡 ...

  9. 局部覆盖element-ui的默认样式

    最近项目中遇到的问题,只想在某个页面里面单独更改element-ui的样式,而不影响全局 有两种方法: 1.在需要更改的组件里新增一个style标签[重点:不要加scoped],然后直接获取class ...

  10. 使用Boost.Python构建混合系统(译)

    目录 Building Hybrid Systems with Boost.Python 摘要(Abstract) 介绍(Introduction) 设计目标 (Boost.Python Design ...