Python学习——Python 与 C 语法对比5(函数)

承接上篇:

Python学习——Python 与 C 语法对比1(输出、注释、运算符、数字型)-CSDN博客

Python学习——Python 与 C 语法对比2(非数字型)-CSDN博客

Python学习——Python 与 C 语法对比3(条件控制)-CSDN博客

Python学习——Python 与 C 语法对比4(循环)-CSDN博客

Python 与 C 函数语法对比

语法特性PythonC
函数定义def function_name(parameters):
# Function body
return_type function_name(parameter_types) {
   // Function body
}
参数类型注解def function_name(param1: int, param2: str) -> float:
# Function body
int function_name(int param1, char* param2){
    // Function body
}
默认参数值def function_name(param1=0, param2=''):
# Function body
void function_name(int param1 = 0, char* param2 = NULL) {
   // Function body
}
可变参数def function_name(*args):
# Function body
void function_name(int argc, ...) {
   // Function body
}
关键字参数def function_name(**kwargs):
# Function body
C语言不支持关键字参数,但你可以通过结构体和函数指针来实现类似的功能。
Lambda表达式lambda x: x + 1C语言本身并没有lambda表达式,需要使用函数指针或者结构体来实现类似的功能。
匿名函数lambda x: x * x

C语言中的匿名函数(使用函数指针)

int square(int x) { return x * x; }

递归调用def factorial(n):
  if n == 0:
    return 1
  else:
    return n * factorial(n-1)
int factorial(int n) {
  if (n == 0) {
    return 1;
  } else {
    return n * factorial(n - 1);
  }
}

举例:函数定义、默认参数

Python:

def greet(name):
    return f"Hello, {name}!"

print(greet("Alice"))  # 输出 "Hello, Alice!"

C:

#include <stdio.h>
#include <string.h>

char* greet(const char* name) {
    static char greeting[50];
    sprintf(greeting, "Hello, %s!", name);
    return greeting;
}

int main() {
    printf("%s\n", greet("Alice"));  // 输出 "Hello, Alice!"
    return 0;
}

举例:可变参数

Python:

def print_numbers(*args):
    for num in args:
        print(num)

print_numbers(1, 2, 3, 4, 5)  # 输出 1 2 3 4 5

C:

#include <stdio.h>
#include <stdarg.h>

void print_numbers(int count, ...) {
    va_list args;
    va_start(args, count);
    for (int i = 0; i < count; i++) {
        int num = va_arg(args, int);
        printf("%d ", num);
    }
    va_end(args);
    printf("\n");
}

int main() {
    print_numbers(5, 1, 2, 3, 4, 5);  // 输出 1 2 3 4 5
    return 0;
}

举例:关键字参数

Python:

def print_info(name, age, city):
    print(f"Name: {name}, Age: {age}, City: {city}")

print_info(age=25, name="Alice", city="New York")  # 输出 "Name: Alice, Age: 25, City: New York"


C:

#include <stdio.h>
#include <string.h>

typedef struct {
    char *name;
    int age;
    char *city;
} Person;

void print_info(Person p) {
    printf("Name: %s, Age: %d, City: %s\n", p.name, p.age, p.city);
}

int main() {
    Person alice = {"Alice", 25, "New York"};
    print_info(alice);
    return 0;
}

在这个示例中,我们定义了一个名为Person的结构体,用于存储姓名、年龄和城市信息。然后我们创建了一个print_info函数,它接受一个Person类型的参数,并打印出相应的信息。在main函数中,我们创建了一个名为alice的Person实例,并调用print_info函数来打印她的详细信息。

举例:lambda

Python:

add = lambda x, y: x + y
print(add(3, 5))  # 输出 8

C:

#include <stdio.h>

int add(int x, int y) {
    return x + y;
}

int main() {
    printf("%d\n", add(3, 5));  // 输出 8
    return 0;
}

举例:匿名函数

Python:

# 定义一个匿名函数,接受两个参数x和y,返回它们的和
add = lambda x, y: x + y

# 使用匿名函数计算3和5的和
result = add(3, 5)
print(result)  # 输出8

C:

#include <stdio.h>

// 定义一个函数类型,接受两个整数参数,返回它们的和
typedef int (*func_ptr)(int, int);

// 定义一个普通函数,实现上述类型的功能
int add(int x, int y) {
    return x + y;
}

int main() {
    // 声明一个函数指针变量,指向add函数
    func_ptr add_ptr = add;

    // 使用函数指针调用add函数
    int result = add_ptr(3, 5);
    printf("%d\n", result);  // 输出8

    return 0;
}

 举例:递归调用

Python:

def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n - 1)

print(factorial(5))  # 输出 120

C:

#include <stdio.h>

int factorial(int n) {
    if (n == 0) {
        return 1;
    } else {
        return n * factorial(n - 1);
    }
}

int main() {
    printf("%d\n", factorial(5));  // 输出 120
    return 0;
}

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值