🔹 *args and **kwargs in Python — Flexible Function Design Ever wondered how Python functions handle dynamic inputs? That’s where *args and **kwargs come in 👇 💡 *args (Non-keyword arguments) Allows you to pass a variable number of positional arguments. def add_numbers(*args): return sum(args) print(add_numbers(1, 2, 3)) # 6 print(add_numbers(5, 10, 15, 20)) # 50 💡 **kwargs (Keyword arguments) Allows you to pass a variable number of named arguments. def print_details(**kwargs): for key, value in kwargs.items(): print(f"{key} = {value}") print_details(name="Nittu", role="QA", skill="Playwright") ⚡ Combined usage: def demo(*args, **kwargs): print("Args:", args) print("Kwargs:", kwargs) demo(1, 2, 3, name="Tester", tool="Playwright") 🚀 Key takeaway: Use *args when you don’t know how many positional inputs you’ll get. Use **kwargs when you want flexibility with named inputs. #Python #Coding #Automation #QA #SoftwareTesting #Developers #TechLearning
Python *args and **kwargs for Flexible Function Design
More Relevant Posts
-
Level Up Your Python API Design: Mastering / and * Have you ever looked at a Python function signature and wondered what those / and * symbols actually do? While many developers stick to standard arguments, modern Python (3.8+) provides surgical precision over how functions receive data. Understanding this is key to building robust, self-documenting APIs. Check out this "Ultimate Signature" example: def foo(pos1, pos2, /, pos_or_kwd1, pos_or_kwd2='default', *args, kwd_only1, kwd_only2='default', **kwargs): print( f"pos1={pos1}", f"pos2={pos2}", f"kwd_only1={kwd_only1}", # ... and so on ) The Breakdown: Positional-Only (/): Everything to the left of the slash must be passed by position. You cannot call foo(pos1=1). This is perfect for performance and keeping your API flexible for future parameter renaming. Positional-or-Keyword: The "classic" Python parameters that can be passed either way. The Collector (*args): Grabs any extra positional arguments and packs them into a tuple. Keyword-Only: Everything after *args (or a standalone *) must be named explicitly. This prevents "magic number" bugs and makes the intent of the caller crystal clear. The Dictionary (**kwargs): Catches any remaining keyword arguments. Why should you care? Good code isn't just about making it work; it’s about making it hard to use incorrectly. By using these boundaries, you create a strict contract. You force clarity where it’s needed (Keyword-Only) and allow flexibility where it’s not (Positional-Only). Are you using these constraints in your daily development, or do you prefer keeping signatures simple? Let’s discuss below! 👇 #Python #SoftwareEngineering #CleanCode #Backend #ProgrammingTips #Python3 #CodingLife
To view or add a comment, sign in
-
🧠 Python Concept: strip(), lstrip(), rstrip() Clean your strings like a pro 😎 ❌ Problem text = " Hello Python " print(text) 👉 Output: " Hello Python " 😵💫 (extra spaces) ❌ Traditional Way text = " Hello Python " text = text.replace(" ", "") print(text) 👉 Removes ALL spaces ❌ (not correct) ✅ Pythonic Way text = " Hello Python " print(text.strip()) # both sides print(text.lstrip()) # left only print(text.rstrip()) # right only 🧒 Simple Explanation Think of it like cleaning dust 🧹 ➡️ strip() → clean both sides ➡️ lstrip() → clean left ➡️ rstrip() → clean right 💡 Why This Matters ✔ Clean user input ✔ Avoid bugs in comparisons ✔ Very useful in real-world apps ✔ Cleaner string handling ⚡ Bonus Example text = "---Python---" print(text.strip("-")) 👉 Output: "Python" 🐍 Clean data, clean code 🐍 Small functions, big impact #Python #PythonTips #CleanCode #LearnPython #Programming #DeveloperLife #100DaysOfCode
To view or add a comment, sign in
-
-
Python: sort() vs sorted() Have you ever had to pause for a second and think: “Do I need sort() or sorted() here?” 😅 This is the common Python confusions. Let’s clear it up. 🔹 list.sort() ◾ A method (belongs to list objects) ◾ Works only on lists ◾ Sorts the list in-place ◾ Changes the original list ◾ Returns None Example: numbers = [3, 1, 4, 2] numbers.sort() print(numbers) # [1, 2, 3, 4] 🔹 sorted() ◾ A function (built-in Python function) ◾ Returns a new sorted list ◾ Does NOT change the original ◾ Works on any iterable Example: numbers = [3, 1, 4, 2] new_numbers = sorted(numbers) print(new_numbers) # [1, 2, 3, 4] print(numbers) # [3, 1, 4, 2] The key difference: sort() → changes your original data sorted() → keeps your original data safe 💡 Quick way to remember: 👉 If you want to keep the original, use sorted() 👉 If you want to modify the list directly, use sort() #Python #Programming #LearnPython #DataScience #LearningJourney #WomenInTech
To view or add a comment, sign in
-
-
🚀 Python GIL vs No-GIL — Real FastAPI Benchmarks (Python 3.13) Free-threaded Python is no longer just an experiment — it’s starting to show real impact. I came across a benchmark comparing Python 3.12 (with GIL) vs Python 3.13t (No-GIL) using FastAPI, and the results are pretty interesting 👇 💡 Key Takeaways: 🔹 Massive CPU Boost (~8x) CPU-bound endpoints jumped from ~4 RPS to ~32 RPS — with ZERO code changes. This is what true parallelism across cores looks like. 🔹 Threading inside requests ≠ better performance Even without GIL, spawning threads inside a single request didn’t help. Why? Under load, request-level parallelism already saturates the CPU. Extra threads just add overhead. 🔹 I/O performance unchanged No surprise here — GIL was never the bottleneck for I/O-bound workloads. Async + I/O still behaves the same. 📊 What this means in practice: ✅ Use No-GIL Python when: - You have CPU-heavy APIs (ML inference, image processing, data pipelines) - High concurrency + CPU contention exists - You previously relied on multiprocessing to bypass GIL ❌ Don’t expect gains if: - Your app is mostly I/O (DB calls, HTTP requests) - You’re already using async effectively ⚠️ Things to keep in mind: - Free-threading is still evolving - Thread safety is now YOUR responsibility - Some C extensions may not be ready yet 🔥 The most exciting part? Same code. Same FastAPI app. Just a different Python runtime → 8x improvement. This could seriously change how we design backend systems in Python. Curious — would you switch to No-GIL Python for your APIs? #Python #FastAPI #BackendEngineering #Performance #Concurrency #AI #SoftwareEngineering
To view or add a comment, sign in
-
-
Python has easy ways to make your text, numbers, and dates look clear and professional. Here are 4 tricks you should try: 1. f-Strings :The easiest way to put variables straight into your text. Fast, readable, perfect for quick outputs. name = "Mayar" age = 22 print(f"My name is {name} and I am {age} years old.") 2. Alignment & Width :Keep tables, reports, or lists neat by aligning text and numbers. Left, center, or right—your choice! print("{:<10} | {:^10} | {:>10}".format("Name", "Age", "Score")) print("{:<10} | {:^10} | {:>10}".format("Mayar", 22, 95)) 3. Template Strings :Create reusable text templates and fill in values later. Makes your code cleaner and easier to manage. from string import Template t = Template("Hello $name, your score is $score.") print(t.substitute(name="Mayar", score=95)) 4. Date & Time Formatting :Show dates and times in a clear, readable way. Useful for reports, logs, or messages. from datetime import datetime now = datetime.now() print(f"Date: {now:%d-%m-%Y} Time: {now:%H:%M:%S}") CodeAcademy_om Kulsoom Shoukat Ali Sultan AL-Yahyai #Python #Coding #PythonTips #Developer #LearnPython #TechSkills #CodeBetter #DateTime
To view or add a comment, sign in
-
-
🚀 Built a simple Python script to clean up my messy Downloads folder! We all download files daily, and things get cluttered fast. So I wrote a quick automation script using Python to organize files into folders like Images, Documents, Archives, etc. 💡 Here’s the code: ```python from pathlib import Path import shutil # Folder to organize source = Path("C:/Users/YourName/Downloads") # File type mapping folders = { ".jpg": "Images", ".png": "Images", ".pdf": "Documents", ".zip": "Archives", ".exe": "Installers" } for file in source.iterdir(): if file.is_file(): folder_name = folders.get(file.suffix.lower()) if folder_name: destination = source / folder_name destination.mkdir(exist_ok=True) shutil.move(str(file), destination / file.name) ``` ⚡ What it does: * Scans your Downloads folder * Detects file types * Creates folders automatically * Moves files to the right place Sometimes, small automations like this can save a lot of time and keep your system organized. #Python #Automation #Coding #Developers #Productivity #Backend
To view or add a comment, sign in
-
🐍 The most misunderstood line in Python is this: for item in [1, 2, 3]: Most developers think the for loop just "goes through the list". What it actually does: calls iter([1,2,3]) to get an iterator, then calls next() on it repeatedly until StopIteration is raised. That's the entire protocol. Once you understand that, generators click immediately. A generator function with yield IS an iterator — Python implements iter and next automatically. And the magic of yield is that the function pauses at each yield and resumes from there on the next call. Full guide: iterator protocol from scratch, generator functions vs expressions, yield from for delegation, lazy 5-stage file processing pipeline, context managers (enter/exit), @contextmanager, suppress, ExitStack, and send()/throw() for two-way generator communication. A generator expression uses 200 bytes. An equivalent list uses 8MB. For the same data. 📎 Free PDF. Zero pip installs — pure Python standard library. #Python #Generators #Iterators #ContextManagers #PythonProgramming #SoftwareEngineering #CleanCode #BackendDev #Programming
To view or add a comment, sign in
-
Top 10 Python One Liners! 1️⃣ Reverse a string: reversed_string = "Hello World"[::-1] 2️⃣ Check if a number is even: is_even = lambda x: x % 2 == 0 3️⃣ Find the factorial of a number: factorial = lambda x: 1 if x == 0 else x * factorial(x - 1) 4️⃣ Read a file and print its contents: [print(line.strip()) for line in open('file.txt')] 5️⃣ Create a list of squares: squares = [x**2 for x in range(10)] 6️⃣ Flatten a list of lists: flat_list = [item for sublist in [[1, 2], [3, 4], [5, 6]] for item in sublist] 7️⃣ Find the length of a list: length = len([1, 2, 3, 4]) 8️⃣ Create a dictionary from two lists: keys = ['a', 'b', 'c']; values = [1, 2, 3]; dictionary = dict(zip(keys, values)) 9️⃣ Generate a list of random numbers: import random; random_numbers = [random.randint(0, 100) for _ in range(10)] 🔟 Check if a string is a palindrome: is_palindrome = lambda s: s == s[::-1] Mastering these one-liners can significantly improve your coding efficiency and make your code more concise.
To view or add a comment, sign in
-
-
🚀 Mastering Recursion with Gray Code Generation I recently worked on an interesting problem—generating Gray Codes using recursion in Python. This problem is a great example of how powerful and elegant recursive thinking can be. 🔹 What is Gray Code? Gray Code is a binary sequence where two consecutive values differ in only one bit. It has applications in digital systems, error correction, and algorithms. 🔹 Approach Used: Instead of generating all binary numbers and converting them, I used a recursive pattern: Base case: For n = 1 → ["0", "1"] Recursively get Gray codes for n-1 Prefix "0" to the original list Prefix "1" to the reversed list Combine both 🔹 Python Implementation: class Solution: def graycode(self,n): if n ==1: return ["0","1"] prev_gray = self.graycode(n - 1) result = [] for code in prev_gray: result.append("0" + code) for code in reversed(prev_gray): result.append("1" + code) return result 💡 Key Learning: Sometimes the best solutions don’t require complex logic—just recognizing patterns and applying recursion smartly. 📈 This problem strengthened my understanding of: Recursion Pattern building Problem decomposition Would love to hear how others approached this problem or optimized it further! 😊 #Python #Recursion #Algorithms #CodingJourney #DataStructures #ProblemSolving
To view or add a comment, sign in
-
Day 30 of #60DaysOfMiniProjects Today I stepped into the world of Web Scraping using Python I built a Webpage Analyzer that extracts and summarizes key details from any website using Python. At first glance, it looks simple—but this project helped me understand how real-world data extraction works behind the scenes. What this project does: • Takes a website URL as input • Fetches webpage content using requests • Parses HTML using BeautifulSoup • Extracts important insights from the page What it analyzes: • Webpage title • Total number of links • Total number of images • Total number of paragraphs Concepts I worked with: • Web scraping fundamentals • HTTP requests handling • HTML parsing • DOM structure understanding • Exception handling in Python This project gave me a clear idea of how websites are structured and how data can be programmatically extracted and analyzed. Next step: Building a more advanced scraper with filtering + data storage Learning step by step. Building consistently. Improving every day. #Python #WebScraping #BeautifulSoup #Requests #MiniProjects #BuildInPublic #CodingJourney #DeveloperGrowth #LearningInPublic #100DaysOfCode
To view or add a comment, sign in
Explore related topics
Explore content categories
- Career
- Productivity
- Finance
- Soft Skills & Emotional Intelligence
- Project Management
- Education
- Technology
- Leadership
- Ecommerce
- User Experience
- Recruitment & HR
- Customer Experience
- Real Estate
- Marketing
- Sales
- Retail & Merchandising
- Science
- Supply Chain Management
- Future Of Work
- Consulting
- Writing
- Economics
- Artificial Intelligence
- Employee Experience
- Workplace Trends
- Fundraising
- Networking
- Corporate Social Responsibility
- Negotiation
- Communication
- Engineering
- Hospitality & Tourism
- Business Strategy
- Change Management
- Organizational Culture
- Design
- Innovation
- Event Planning
- Training & Development