python之函数初识

1、函数的初识
一、如何定义函数:
def 函数名():
  代码...app

例如:
def my_len():
  l = [1, 2, 3, 4]
  count = 0
  for i in l:
    count += 1
  print(count)函数

二、函数的优势:
1,减小代码的重复率。
2,加强代码的阅读性。post

三、函数究竟是什么?
函数最主要的目的:封装一个功能。spa

四、函数如何调用:函数名 ()
my_len()blog

五、总结
定义:def 关键词开头,空格以后接函数名称和圆括号(),最后还有一个":"。
   def 是固定的,不能变,他就是定义函数的关键字。
   空格 为了将def关键字和函数名分开,必须空,固然你能够空2格、3格或者你想空多少都行,但正常人仍是空1格。
   函数名:函数名只能包含字符串、下划线和数字且不能以数字开头。虽然函数名能够随便起,但咱们给函数起名字仍是要尽可能简短,并能表达函数功能。
   括号:是必须加的!字符串

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

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

2、函数的返回值:return
一、函数中若是遇到retrun,则直接结束函数。数据类型

二、给函数的执行者返回值。
1,不写return和只写return              返回None
2,return 单个值                              原封不动的返回(返回的数据类型也一致)
3,return 多个值                              返回一个元组,全部的返回值做为元组的每个元素总结

(1)不写return
def func1():
  print(111)
  print(222)
print(func1())      #111 222 None

(1-2)只写return
def func1():
  print(111)
  print(222)
  return
print(func1())     #111 222 None


(2)return 单个值
def fun1():
  a = 1
  b = 'hello'
  c = [1,2,3]
  return a
print(fun1())      # 1

(3)return 多个值
def fun1():
  a = 1
  b = 'hello'
  c = [1,2,3]
  return a,b,c
print(fun1())      #(1, 'hello', [1, 2, 3])

注意:工做中,函数中尽可能不要出现print,这里只是为了展现函数的用法才使用的

 


3、函数的参数
一、用一个例子简单了解一下:
#函数定义
def mylen(s):
  """计算s的长度"""
  length = 0
  for i in s:
    length += 1
  return length

#函数调用
str_len = mylen("hello world")
print('str_len : %s' %(str_len))

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

这个“hello world”被称为实际参数,由于这个是实际的要交给函数的内容,简称实参。

定义函数时的s,只是一个变量的名字,被称为形式参数,由于在定义函数的时候它只是一个形式并非真正的数据,
表示这里有一个参数,简称形参。 

 

二、实参
1,位置参数:按照顺序,一一对应


def func1(x,y):
  print(x,y)
func1(1,2)      #位置参数,1对应传给x,2对应传给y


2,关键字传参:能够不按照顺序,可是必须一一对应
def func1(x,y):
  return x+y
print(func1(y=100,x=99))      #关键字参数,咱们写实参的时候直接声明了形参y对应100,x对应99

3,混合传参:关键字参数必定要在位置参数后面
def func1(a,b,x,y):
  return b+y

print(func1(100,200,y=100,x=99))    #300

三、形参
1,位置参数 按照顺序,一一对应
def func(x,y,z):
  print(x,y,z)
func(1,2,3)


2,默认参数:给其传值,将原默认参数覆盖掉,不传值,不报错,使用默认值。
应用场景:不常常改变的参数,可是一直在用。
def func1(x,y,a=666):
  print(x,y,a)
func1(1,2)              #1 2 666
func1(1,2,333)       #1 2 333

注意:
默认参数通常设置为不可变的数据类型(str,int,tuple等),
若默认参数设置为可变的数据类型(list,dict等),那么执行一次后,这个可变的数据类型它始终用的是同一个。
def fun1(x,l1=[]):
  l1.append(x)
  return l1

res = fun1(20)
print(res,id(res))       #[20] 2192007779592

res1 = fun1(100)
print(res1,id(res1))   #[20, 100] 2192007779592


四、参数总结
实参:
位置参数:按照顺序,一一对应
关键字参数:能够不按照顺序,可是必须一一对应
混合参数:关键字参数必定要在位置参数后面

形参
位置参数:按照顺序,一一对应
默认参数:给其传值,将原默认参数覆盖掉,不传值,不报错,使用默认值

 

小知识点:只针对于简单的if else 这样的结构,才能够使用。
def fun(x,y):
  if x > y:
    return x
  else:
    return y
print(fun(1,2))

 

上面代码能够下成下面的代码:
def fun(x,y):
  return x if x > y else y
print(fun(1,2))

相关文章
相关标签/搜索