初识函数定义与调用

def my_len():
i = 0
for k in s1:
i +=1
return i #返回值
# s = 'tim'
s1 = '班主任阿娇'
length =my_len()
print(length)

总结一:

定义:def 关键词开头,空格之后接函数名称和圆括号(),最后还有一个":"。

   def 是固定的,不能变,必须是连续的def三个字母,不能分开。。。它们要相亲相爱的在一起。

   空格 为了将def关键字和函数名分开,必须空(四声),当然你可以空2格、3格或者你想空多少都行,但正常人还是空1格。

   函数名:函数名只能包含字符串、下划线和数字且不能以数字开头。虽然函数名可以随便起,但我们给函数起名字还是要尽量简短,并能表达函数功能

   括号:是必须加的,先别问为啥要有括号,总之加上括号就对了!

注释:每一个函数都应该对功能和参数进行相应的说明,应该写在函数下面第一行。以增强代码的可读性。

调用:就是 函数名() 要记得加上括号,

函数返回值

return关键字的作用

  return 是一个关键字,在pycharm里,你会看到它变成蓝色了。你必须一字不差的把这个单词给背下来。

  这个词翻译过来就是“返回”,所以我们管写在return后面的值叫“返回值”

要研究返回值,我们还要知道返回值有几种情况:分别是没有返回值、返回一个值、返回多个值

没有返回值

不写return的情况下,会默认返回一个None:我们写的第一个函数,就没有写return,这就是没有返回值的一种情况。

def mylen():
"""计算s1的长度"""
s1 = "hello world"
length = 0
for i in s1:
length = length+1
print(length) #函数调用
str_len = mylen()
#因为没有返回值,此时的str_len为None
print('str_len : %s'%str_len)

只写return,后面不写其他内容,也会返回None,有的同学会奇怪,既然没有要返回的值,完全可以不写return,为什么还要写个return呢?这里我们要说一下return的其他用法,就是一旦遇到return,结束整个函数

def ret_demo():
print(111)
return
print(222)
ret = ret_demo()
print(ret)

return None:和上面的两种情况一样,我们一般不这样写

返回一个值

刚刚我们已经写过一个返回一个值的情况,只需在return后面写上要返回的内容即可。  

#可以返回任何数据类型
#只要返回了就可以接收到
def mylen():
"""计算s1的长度"""
s1 = "hello world"
length = 0
for i in s1:
length = length+1
return length #函数调用
str_len = mylen()
print('str_len : %s'%str_len)

返回多个值

  可以返回任意多个、任意数据类型的值

def ret_demo1():
'''返回多个值'''
return 1,2,3,4 def ret_demo2():
'''返回多个任意类型的值'''
return 1,['a','b'],3,4 ret1 = ret_demo1()
print(ret1)
ret2 = ret_demo2()
print(ret2)

返回的多个值会被组织成元组被返回,也可以用多个值来接收

def ret_demo2():
return 1,['a','b'],3,4 #返回多个值,用一个变量接收
ret2 = ret_demo2()
print(ret2) #返回多个值,用多个变量接收
a,b,c,d = ret_demo2()
print(a,b,c,d) #用多个值接收返回值:返回几个值,就用几个变量接收
a,b,c,d = ret_demo2()
print(a,b,c,d)

函数的参数

#函数定义
def mylen(s1):
"""计算s1的长度"""
length = 0
for i in s1:
length = length+1
return length #函数调用
str_len = mylen("hello world")
print('str_len : %s'%str_len)

我们告诉mylen函数要计算的字符串是谁,这个过程就叫做 传递参数,简称传参,我们调用函数时传递的这个“hello world”和定义函数时的s1就是参数

实参与形参

参数还有分别:

我们调用函数时传递的这个“hello world”被称为实际参数,因为这个是实际的要交给函数的内容,简称实参。

定义函数时的s1,只是一个变量的名字,被称为形式参数,因为在定义函数的时候它只是一个形式,表示这里有一个参数,简称形参。 

# def my_len(t): #接收参数,形式参数
# i = 0
# for k in t:
# i +=1
# return i #返回值
# # s = 'tim'
# # s1 = '班主任阿娇'
# length =my_len('班主任阿娇') #传递参数 实参
# print(length)

传递多个参数

参数可以传递多个,多个参数之间用逗号分割。

1.按照位置传值

def mymax(x,y):
#此时x=10,y=20
the_max = x if x > y else y
return the_max ma = mymax(10,20)
print(ma)

2、关键字传值

def my_sum(a,b):
print(a,b)
res = a+b
return res
ret = my_sum(b=1,a=2)
print(ret)
# 只有调用函数的时候
# 按照位置传:直接写参数的值
# 按照关键字:关键字=值
# 定义函数的时候:
# 位置参数:直接定义参数
# 默认参数(关键字参数):参数名=值
# 动态参数:可以接受任意多个参数,参数名之前加*号(参数名args),参数名之前加**。习惯用kwargs
# 顺序:必须先定义位置参数,*args,后定义默认参数,**kwargs 3.位置、关键字形式混着用
def mymax(x,y):
#此时x = 10,y = 20
print(x,y)
the_max = x if x > y else y
return the_max ma = mymax(10,y = 20)
print(ma)

默认参数

    1.正常使用

      使用方法

      为什么要有默认参数:将变化比较小的值设置成默认参数

    2.默认参数的定义

def stu_info(name,sex = "male"):
"""打印学生信息函数,由于班中大部分学生都是男生,
所以设置默认参数sex的默认值为'male'
"""
print(name,sex) stu_info('alex')
stu_info('eva','female')

动态参数

# 动态参数有两种:可以接受任意个参数
# *args:接受是按照位置传参的值,组织成一个元祖
# **kwargs:接受的是按照关键字传参的值,组成一个字典
# args必须在kwargs之前

def func (**kwargs):#按照关键字传多个参数
print(kwargs) func(a=1,b=2,c=3)
func(a=1,b=2)
func(a=1)

#先按照位置传参,在安装关键字传参

def func(*args,**kwargs):
print(args,kwargs)
func(1,2,3,4,5,a='dfdfsdf',b='')
# 动态参数的另一个传参方式
def func(*args):  #站在形参的角度上,给变量加上*,就是组合所有传来的值
print(args)
func(1,2,3,4,5)
l = [1,2,3,4,5]
func(*l) #站在实参的角度上,给一个序列加上*号就是将这个序列按照顺序打散
def func(**kwargs):
print(kwargs)
func(a=1,b=2)
d={'a':1,'b':2}
func(**d)
 

Python9-函数-day9的更多相关文章

  1. Python-9 函数

    #1 内建函数 乘方:pow() >>> pow(2,3) 8 >>> 取绝对值:abs() >>> abs(-1) 1 >>> ...

  2. 函数 day9

    一,什么是函数? 函数的定义与调用 s = 'fkdsagadfdsagfdsagg' count = 0 for i in s: count += 1 print(count) l1 = [1,2, ...

  3. day9函数作业详解

    1.day9题目 1,整理函数相关知识点,写博客. 2,写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者. 3,写函数,判断用户传入的对象(字符串.列表.元组 ...

  4. python全栈开发-Day9 函数对象、函数嵌套、名称空间与作用域

    一 .函数对象 一 .函数是第一类对象,即函数可以当作数据传递 可以被引用 可以当作参数传递 返回值可以是函数 可以当作容器类型的元素 二. 利用该特性,优雅的取代多分支的if def foo(): ...

  5. python全栈学习--day9(函数初始)

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

  6. python—day9 函数的定义、操作使用方法、函数的分类、函数的嵌套调用

    一.函数的定义 函数的四个组成部分: 函数名. 函数体. 函数返回值. 函数参数 1.概念:重复利用的工具,可以完成特定功能的代码块,函数是存放代码块的容器 2.定义: def:声明函数的关键词 函数 ...

  7. Python学习day9 函数Ⅰ(基础)

    函数Ⅰ(基础) 三目运算 基本结构 v =  前面  if 条件 else 后面    #条件为真v=前面,条件为假v=后面.​#等同于if 条件: v = '前面'else:    v = '后面' ...

  8. Day9 Python基础之函数基础(七)

    参考链接:https://www.cnblogs.com/yuanchenqi/articles/5828233.html 1.函数的定义 定义: 函数是指将一组语句的集合通过一个函数名封装起来,要想 ...

  9. day9.初始函数练习题

    1.写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者. def new(args): a = [] for I in range(1,len(args),2) ...

  10. day9.初识函数

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

随机推荐

  1. 微信小程序使用字体图标

    项目中常常需要使用到字体图标,微信小程序中使用字体图标与在平常的web前端中类似但是又有区别.下面以使用阿里图标为例子讲解如何在微信小程序中使用字体图标. 第一步:下载需要的字体图标 进入阿里图标官网 ...

  2. Zynq7000开发系列-5(OpenCV开发环境搭建:Ubuntu、Zynq)

    操作系统:Ubuntu14.04.5 LTS 64bit OpenCV:OpenCV 3.1.0.opencv_contrib gcc:gcc version 4.8.4 (Ubuntu 4.8.4- ...

  3. GYM 101673J(模拟)

    本来我就模拟和搜索恐惧症,场上乍一看调度来调度去的真的吓得没敢写.然鹅赛后听说别的队写得贼短就写了写,真的不难--嘤嘤嘤 #include <cstdio> #include <cs ...

  4. 101 to 010 Atcoder CODE FESTIVAL 2017 qual B D

    https://www.luogu.org/problemnew/show/AT3575 题解 根本不会.. 错误记录:缺少32行的转移.显然这个转移是必要的 #include<cstdio&g ...

  5. 转 错误:ORA-28002/ORA-65162 : the password will expire within 7 days 解决方法

    今天在使用sqlplus时出现 =============================================== ERROR:ORA-28002: the password will e ...

  6. jQuery val()方法及valHooks源码解读

    val: function( value ) { var hooks, ret, isFunction, elem = this[0]; if ( !arguments.length ) {//无参数 ...

  7. oracle GROUP BY rollup

    1.ROW_NUMBER() OVER函数的基本用法用法 http://www.cnblogs.com/fxgachiever/archive/2010/09/15/1826792.html 2.De ...

  8. Unity Shader入门精要学习笔记 - 第13章 使用深度和法线纹理

    线纹理的代码非常简单,但是我们有必要在这之前首先了解它们背后的实现原理. 深度纹理实际上就是一张渲染纹理,只不过它里面存储的像素值不是颜色值而是一个高精度的深度值.由于被存储在一张纹理中,深度纹理里的 ...

  9. Mex(线段树的巧妙应用)

    题目要求求某段区间第一个没有出现的数(0,1,2,3....) ,对于所有的区间,我们把这样的数加起来最后得到一个结果. 首先,我们要求出这样的数,然后还得列举出所有的区间,复杂度太大了. 换种思路, ...

  10. 如何尽量避免引用jQuery

    Introduction 正如jQuery所宣称的一样,Write Less, Do More.很多时候我们喜欢用它来解决问题.但增加一个库必然意味着更大的网络负担,意味着更高的页面初始载入时间.并且 ...