Learn Python in Y Minutes:Function函数

发现了一个宝藏网站:Learn X in Y Minutes,由这个学习了Python,推荐给大家,下面是我跟着敲得代码及翻译还有自己加的一些注释。原网址:https://learnxinyminutes.com/docs/python3/

我用的是jupyter notebook写的,将这个直接保存成了.py文件复制的,输出结果好像没有复制上来。第一次简书比较生疏,望见谅,有问题可留言。

注:#:后面是注释

        ln[x]:代表cell,即一个jupyter notebook的一个cell。

####################################################

## 4. Functions

####################################################

# In[22]:

# 通过def保留字来定义函数

def add(x, y):

print("x is {} and y is {}".format(x, y))

# return语句用来返回处理结果

    return x + y

# In[23]:

# 定义之后可以带参调用

c = add(5, 6)

print(c)

# In[24]:

# 如果不按照顺序输入参数,需要添加形式参数名称

c = add(y=6, x=5)

print(c)

# In[26]:

# 也可以传入参数列表(positional arguments)

def varargs(*args):

print(type(args))

return args

# In[27]:

c = varargs(1, 2, 3)

print(c)

# In[28]:

# 可以通过keyword arguments来传入多个变量

def keyword_args(**kwargs):

print(type(kwargs))

return kwargs

# In[29]:

c = keyword_args(one='1', two='2')

print(c)

# In[30]:

# 也可以混合使用

def all_the_args(*args, **kwargs):

print(args)

print(kwargs)

"""

all_the_args(1, 2, a=3, b=4) prints:

(1, 2)

{"a": 3, "b": 4}

"""

# In[31]:

# 调用函数的时候,*和**也可以反过来使用

args_call = (1, 2, 3, 4)

kwargs_call = {"a":3, "b":4}

all_the_args(*args_call)# equivalent to all_the_args(1, 2, 3, 4)

all_the_args(**kwargs_call)# equivalent to all_the_args(a=3, b=4)

all_the_args(*args_call, **kwargs_call)# equivalent to all_the_args(1, 2, 3, 4, a=3, b=4)

# In[32]:

# 一个函数可以同时返回多个值

# 多个值是以不带括号的tuple的形式返回的

# 但是加了括号也没关系

def swap(x, y):

return y, x

# In[33]:

x =1

y =2

x, y = swap(x, y)# => x = 2, y = 1

(x, y) = swap(x, y)# 这一句和上一句一样

# In[45]:

# 函数范围

# 这里x是一个全局变量(global)

x =5

# In[46]:

def get_x(num):

# 函数内部可以访问外部全局变量

    print(num)

print(x)# => 5

# In[47]:

get_x(5)

# In[48]:

get_x(6)

# In[38]:

def set_x(num):

# 但是不能在函数内部改变全局变量

# 这里的x是一个新生成的,只在函数内生效的局部变量

    x = num# => 43

    print(x)# => 43

# In[49]:

set_x(43)

print(x)

# In[40]:

def set_global_x(num):

# 如果想要在函数内部改变全局变量,需要通过global声明

    global x

print(x)# => 5

    x = num# global var x is now set to num

    print(x)# => num

# In[42]:

set_global_x(43)

# In[50]:

#python支持头等函数

# 简单来讲,return的函数就是上层函数的头等函数

def create_adder(x):

# suber就是简单的嵌套定义了一个函数

    def suber(z):

return x - z

n = suber(5)

# adder参与返回值,是头等函数

    def adder(y):

return n + y

return adder

# In[51]:

add_10_minus_5 = create_adder(10)

# In[52]:

add_10_minus_5(3)

# In[53]:

# python也支持匿名函数

# (lambda <形式参数(列表)>: )(<实参>)

(lambda x: x >2)(3)# => True

# In[54]:

(lambda x, y: x **2 + y **2)(2, 1)# => 5

# In[55]:

# 匿名函数,实际上也是可以命名的

check_greater_than_2 =lambda x: x >2

# In[56]:

check_greater_than_2(4)

# In[57]:

# 还有内建的高阶函数

# 通过map将[1, 2, 3]分别装入add_10_minus_5进行运算

#map((函数),<函数的参数>)

# 返回结果包装成list

list(map(add_10_minus_5, [1, 2, 3]))

# In[58]:

# max是python的内建方法,求参数中的最大值

max(1,2,3)

# In[59]:

# 下面的写法就是就是对位结合,进行计算

# 相当于list(max(1,4), max(2,2), max(3,1))

list(map(max, [1, 2, 3], [4, 2, 1]))

# In[61]:

# filter 可以把返回值为true的参数,返回出来

#filter((function),)  # => function parameter中满足function为true的parameter

list(filter(lambda x: x >5, [3, 4, 5, 6, 7]))# => [6, 7]

# In[62]:

# 也可以根据对列表的理解,写出漂亮的map和filter

[add_10_minus_5(i)for iin [1, 2, 3]]

# In[63]:

[xfor xin [3, 4, 5, 6, 7]if x >5]# => [6, 7]

# In[64]:

# 也可以写出漂亮的字典或者集合

{xfor xin 'abcddeef' if xnot in 'abc'}# => {'d', 'e', 'f'}

# In[65]:

{x: x**2 for xin range(5)}# => {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容